我正在尝试在Java中进行类Rogue练习。这是我生成地板的代码(现在只是一个大房间,边缘上有墙砖)。我试图将我的瓷砖阵列中的某些瓷砖设置为墙砖或地砖。尽管当他们离开setTile方法时,它们会在进入该方法之前恢复到其值。我快疯了这是我的代码:
public Floor(int width, int height) {
this.tiles = new Tile[(width+1)*(height+1)];
this.width = width;
this.height = height;
generateTiles();
boolean test = false;
}
public Tile getTile(int x, int y)
{
return tiles[y * width + x];
}
public void setTile(int x, int y, Tile tile)
{
Tile tileToSet = getTile(x,y);
tileToSet = tile;
}
private void generateTiles() {
for (int i = 0; i < tiles.length; i++)
{
tiles[i] = new Tile();
}
//make the top wall
for (int i = 0; i<width;i++)
{
setTile(i,0,new WallTile());
}
}
}
最佳答案
您的setTile
没有任何意义。您正在检索当前位于该位置的图块,将其存储在局部变量tileToSet
中,然后覆盖该变量的值。
您正在尝试将给定的切片存储在tiles
数组中。与getTile
的实现方式类似,您可以使用以下方法执行此操作:
public void setTile(int x, int y, Tile tile)
{
tiles[y * width + x] = tile;
}
请注意,这与以下项不等效(但您似乎认为如此):
public void setTile(int x, int y, Tile tile)
{
Tile tileToSet = tiles[y * width + x];
tileToSet = tile;
}