我正在使用双数组,需要能够计算类Tile
中一个图块的周围< 8个邻居。由于我想单独了解它们,Tile
包含8个setter方法,它们分别接受Tile
作为每个方向的参数。所以首先我迭代一个给定图块的邻居并将它们添加到ArrayList
。现在我想将这些元素传递给setter-methods但他们不接受它,因为它不是Tile
而是List<Tile>
我该如何解决这个问题?我尝试更改setter-Method以期望List,但这并没有改变任何东西。或者我可能需要重构我的整个方法?为此,我正在看一个肯定有所有8个邻居的瓷砖,我需要考虑抓住边缘的人,一旦这种情况起作用,就没有那么多的邻居。
private void calculateNeighbors (int x, int y){
System.out.print("The neighbors of " + getTile(x,y));
List<Tile> neighbors = new ArrayList<>();
int[] coordinates = new int[]{
-1,-1,
-1, 0,
-1, 1,
0,-1,
0, 1,
1,-1,
1, 0,
1, 1
};
for (int i = 0; i < coordinates.length; i++) {
int columnX = coordinates[i];
int rowY = coordinates[++i];
int nextX = x + columnX;
int nextY = y + rowY;
if (nextX >= 0 && nextX < getListOfTiles().length
&& nextY >= 0 && nextY < getListOfTiles().length) {
neighbors.add(getTile(nextX, nextY));
}
}
//this here isn't working
tile.setTopLeft(neighbors[0]);
tile.setTop(neighbors[1]);
//etc
}
}
答案 0 :(得分:1)
您需要使用列表的get(int)方法根据索引访问列表中的对象。
tile.setTopLeft(neighbors.get(0));
tile.setTop(neighbors.get(1));
下标运算符就是你有一个数组。