Java二维数组仅在第一行中按预期工作
这段代码是我正在制作的扫雷舰游戏板类的基本代码。但是,当我显示电路板时,这仅显示阵列的第一行。我已经看了这么长时间的代码,看不出二维数组哪里出了问题。谢谢你的帮助Java二维数组仅在第一行中按预期工作,java,arrays,minesweeper,Java,Arrays,Minesweeper,这段代码是我正在制作的扫雷舰游戏板类的基本代码。但是,当我显示电路板时,这仅显示阵列的第一行。我已经看了这么长时间的代码,看不出二维数组哪里出了问题。谢谢你的帮助 public class Board { private Cell[][] cells; public Board(PApplet p, int rows, int columns, double bombChance) { cells = new Cell[rows][columns];
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;
}
}
}
公共课程委员会{
专用小区[][]小区;
公共电路板(PApplet p,整数行,整数列,双精度){
单元格=新单元格[行][列];
for(int r=0;r
在开始渲染下一行时,似乎无法重置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
}
}
public void display(){
双tempX=0;
双tempY=0;
双倍尺寸=50;
for(int r=0;r tempX=0;//在开始渲染下一行时,似乎无法重置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
}
}
public void display(){
双tempX=0;
双tempY=0;
双倍尺寸=50;
for(int r=0;r
tempX=0;//尝试将游戏逻辑与表示逻辑分开。事情会变得非常复杂easier@SeanPatrickFloyd我有一个单独的扫雷类来处理游戏逻辑和修改棋盘。但是,单元格数组本身是在这里处理的,所以这就是问题所在。你的Cell.display方法看起来如何?Step通过代码。而行
和列
的值是多少?断点会起很大作用尝试将游戏逻辑与表示逻辑分开。事情会变得很多easier@SeanPatrickFloyd我有一个单独的扫雷舰类来处理游戏逻辑和修改棋盘。但是,单元格数组本身在这里处理,这就是问题所在。你的Cell.display方法是什么样子的?一步一步地检查代码。行
和列
的值是多少?断点非常有用很乐意提供帮助@JoshKatofsky@jlordo您是正确的。但是,渲染行后,需要将tempX重置为0。原始代码未重新设置t在行的末尾将tempX设置为0。您甚至可以通过使用(r*size)
和(c*size)去除tempX
和tempY
来提高性能
@ThomasPawlitzki也谢谢你,另一双眼睛真的可以简化你的代码!@mangotang给了你一双,Stackoverflow说不会显示,因为我是他们网站的新手(很乐意帮忙@JoshKatofsky@jlordo您是正确的。但是,渲染一行后,需要将tempX重置为0。原始代码没有在行的末尾将tempX重置为0。您甚至可以通过使用(r*大小)
和(c*大小)删除tempX
和tempY
来进行改进
@ThomasPawlitzki也谢谢你,另一双眼睛真的可以简化你的代码!@mangotang给了你一双,Stackoverflow说不会显示,因为我是他们网站的新手(