我有一个小问题,当我尝试在游戏中绘制多层瓷砖时,只显示顶层。例如,我有一个 for 循环来绘制空气砖,在它下面我有另一个来绘制石砖。只有空气砖会绘制,无论我做什么,石砖都不会。这是我的地图类:
public class Map {
public static final int CLEAR = 0;
public static final int STONE = 1;
public static final int GRASS = 2;
public static final int DIRT = 3;
public static final int WIDTH = 32;
public static final int HEIGHT = 24;
public static final int TILE_SIZE = 25;
static ArrayList<ArrayList<Integer>> map = new ArrayList<ArrayList<Integer>>(WIDTH * HEIGHT);
Image air, grass, stone, dirt;
public Map() {
for (int x = 0; x < WIDTH; x++) {
ArrayList<Integer> yaxis = new ArrayList<Integer>();
for (int y = 0; y < HEIGHT; y++) {
yaxis.add(CLEAR);
}
map.add(yaxis);
}
for (int x = 0; x < WIDTH; x++) {
ArrayList<Integer> yaxis = new ArrayList<Integer>();
for (int y = 0; y < HEIGHT; y++) {
yaxis.add(STONE);
}
map.add(yaxis);
}
try {
init(null, null);
} catch (SlickException e) {
e.printStackTrace();
}
render(null, null, null);
}
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
air = new Image("res/air.png");
grass = new Image("res/grass.png");
stone = new Image("res/stone.png");
dirt = new Image("res/dirt.png");
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) {
for (int x = 0; x < map.size(); x++) {
for (int y = 0; y < map.get(x).size(); y++) {
switch (map.get(x).get(y)) {
case CLEAR:
air.draw(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
break;
case STONE:
stone.draw(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
break;
case GRASS:
grass.draw(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
break;
case DIRT:
dirt.draw(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE);
break;
}
}
}
}
}
如果有人可以提供帮助,那就太棒了!