我目前开始了解Java。因此,当我尝试开发一些扫雷应用程序时,我注意到,当尝试向“ Mines []”数组中添加坐标时,调试窗口将打开,并且我的应用程序不会继续显示目标的Minefield。
这就是我的代码:
package com.ochs.minesweeper;
public class MineField {
public Mine[] mines;
public MineField(int xMines, int yMines) {
mines = new Mine[xMines*yMines];
int xCounter = 0;
int yCounter = 0;
for(int i = 0; i < yMines; i++) {
for(int j = 0; j < xMines; j++) {
mines[i*j].setX(xCounter);
mines[i*j].setY(yCounter);
xCounter += 100;
}yCounter += 100;
}
}
}
即使当我只是尝试类似的东西:
for(int i = 0; i < xMines*yMines; i++) {
mines[i].setX(2);
}
或类似的东西似乎我无法在数组中使用for循环的变量来处理...
有人知道我在做什么错吗?我只希望我的MineField拥有Mine []数组。这些地雷都是在for循环中使用不同的坐标创建的,因此可以在我的Surfaceview的网格中显示它们。
有人有主意吗?也许是另一个解决方案,在我的示例矿井中,如何创建简单的对象网格?
提前致谢!
最佳答案
为什么不使用二维数组?您可以定义Mine[][] mines
,然后在循环中:
for(int i = 0; i < yMines; i++) {
for(int j = 0; j < xMines; j++) {
mines[i][j].setX(xCounter);
mines[i][j].setY(yCounter);
xCounter += 100;
}yCounter += 100;
}