Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java二维数组仅在第一行中按预期工作_Java_Arrays_Minesweeper - Fatal编程技术网

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;rtempX=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说不会显示,因为我是他们网站的新手(