Java 二维数组仅按预期处理第一行
Java two dimensional array only working as intended with the first row
此代码是我正在制作的扫雷游戏板的基本部分 class。但是,当我显示板时,这只显示数组的第一行。这段代码看了这么久,也看不出我的二维数组哪里错了。感谢任何帮助
public class Board {
private Cell[][] cells;
public Board(PApplet p, int rows, int columns, double bombChance) {
cells = new Cell[rows][columns];
for (int r = 0; r < cells.length; r++) {
for (int c = 0; c < cells[r].length; c++) {
double randomSeed = Math.random();
if (randomSeed < bombChance) {
cells[r][c] = new BombCell(p);
} else {
cells[r][c] = new SafeCell(p);
}
}
}
}
public void display() {
double tempX = 0;
double tempY = 0;
double size = 50;
for (int r = 0; r < cells.length; r++) {
for (int c = 0; c < cells[r].length; c++) {
cells[r][c].display(tempX, tempY, size);
tempX += 50;
}
tempY += 50;
}
}
}
当您开始渲染下一行时,您似乎无法重置 tempX
。
这可能会解决您的问题:
public void display() {
double tempX = 0;
double tempY = 0;
double size = 50;
for (int r = 0; r < cells.length; r++) {
for (int c = 0; c < cells[r].length; c++) {
cells[r][c].display(tempX, tempY, size);
tempX += 50;
}
tempY += 50;
tempX = 0; // <-------------- look here
}
}
此代码是我正在制作的扫雷游戏板的基本部分 class。但是,当我显示板时,这只显示数组的第一行。这段代码看了这么久,也看不出我的二维数组哪里错了。感谢任何帮助
public class Board {
private Cell[][] cells;
public Board(PApplet p, int rows, int columns, double bombChance) {
cells = new Cell[rows][columns];
for (int r = 0; r < cells.length; r++) {
for (int c = 0; c < cells[r].length; c++) {
double randomSeed = Math.random();
if (randomSeed < bombChance) {
cells[r][c] = new BombCell(p);
} else {
cells[r][c] = new SafeCell(p);
}
}
}
}
public void display() {
double tempX = 0;
double tempY = 0;
double size = 50;
for (int r = 0; r < cells.length; r++) {
for (int c = 0; c < cells[r].length; c++) {
cells[r][c].display(tempX, tempY, size);
tempX += 50;
}
tempY += 50;
}
}
}
当您开始渲染下一行时,您似乎无法重置 tempX
。
这可能会解决您的问题:
public void display() {
double tempX = 0;
double tempY = 0;
double size = 50;
for (int r = 0; r < cells.length; r++) {
for (int c = 0; c < cells[r].length; c++) {
cells[r][c].display(tempX, tempY, size);
tempX += 50;
}
tempY += 50;
tempX = 0; // <-------------- look here
}
}