添加关卡
关卡不同,生成的地图不同。
在GameMap类中:
/**
* 往地图块中快速添加一行指定类型的地图块
* @param type 地图块的类型
* startX 添加地图块的起始的x坐标
* startY 添加地图块的起始的y坐标
* DIS 地图块之间的中心点的间隔,大于块的宽度就是不连续的
*/
public void addRow(int startX,int startY,int endX,int type,final int DIS ){
int count = (endX - startX)/(MapTile.tileW + DIS);
for (int i = 0; i < count; i++) {
MapTile tile = MapTilePool.get();
tile.setType(type);
tile.setX(startX + i * (MapTile.tileW + DIS));
tile.setY(startY);
tiles.add(tile);
}
}
/**
* 往地图块中添加一列指定类型的地图块
* @param startX 添加地图块的起始的x坐标
* @param startY 添加地图块的起始的y坐标
* @param type 添加地图块的类型
* @param DIS 地图块中心之间的距离,大于块的宽度块之间就是不连续的
*/
public void addCol(int startX,int startY,int endY,int type,final int DIS){
int count = (endY - startY)/(MapTile.tileW + DIS);
for (int i = 0; i < count; i++) {
MapTile tile = MapTilePool.get();
tile.setType(type);
tile.setX(startX);
tile.setY(startY + i * (MapTile.tileW + DIS));
tiles.add(tile);
}
}
/**
* 对指定的矩形块添加元素块
* @param startX
* @param startY
* @param endX
* @param endY
* @param type
* @param DIS
*/
public void addRect(int startX,int startY,int endX,int endY,int type,final int DIS){
int rows = (endY - startY)/(MapTile.tileW + DIS);
for (int i = 0; i < rows; i++) {
addRow(startX,startY+ i*(MapTile.tileW + DIS),
endX,type,DIS);
}
}
}