奇怪的Flappy Bird Code错误

时间:2014-04-04 12:40:37

标签: java arrays loops flappy-bird-clone

好的,我有Game,Bird和Board课程。我的Game类中有管道创建,删除和移动代码。我被建议不要创建一个Pipe类并创建一个管道对象。没有管道代码,我的游戏运行顺畅,虽然没有管道出现。当我有管道代码时,程序运行但不显示窗口。我将向您展示Game构造函数和管道代码。

public Game(int a) {

    super("Game");
    setLayout(new BorderLayout());
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);

    this.board = new Board(this);
    add(board, BorderLayout.CENTER);

    bird = new Bird();
    bird.setArr();
    System.out.println("Bird made");

    /*setPipeHeight(a);
    setArr1();
    setArr2();
    System.out.println("Pipe made");
    */
    //It continues, but this is the section I am looking at
}

现在管道代码

public void setPipeHeight (int h){
    System.out.println("Set height");
    height = h;
    //Set coords
    setArr1();
    setArr2();
    /*for (int i = 0; i < arrX1.length; i++){
        for (int j = 0; j < arrY1.length; j++){

        }
    }*/
}

public void setArr1(){
    System.out.println("Set arr1");
    int x = (Board.numCols - 1) - width;
    for (int i = 0; i < width + 1; i++){
        for (int j = 0; j < height + 1; j = j + height){
            int h = height;
            while (h >= 0){
                Board.grid[x][h] = 3;
            }
        }
    }
}

public void setArr2(){
    System.out.println("Set arr2");
    int tillTop = Board.numRows - (height + separation);
    for (int i = 0; i < width + 1; i++){
        for (int j = 0; j < tillTop + 1; j = j + tillTop){
            int h = height;
            while (h >= 0){
                Board.grid[x][h] = 3;
            }
        }
    }
}

public void movePipe(){
    System.out.println("Move pipe");
    x--;
    setArr1();
    setArr2();
}

当我不评论任何内容时,它表示它正在运行,但不会创建一个窗口。 在Game类中,当我注释掉这些行时,窗口会出现,但是鸟不会向下移动。

/*setPipeHeight(a);
setArr1();
setArr2();
System.out.println("Pipe made");
*/

当我注释掉管道代码的其余部分时,我会得到一个功能正常的游戏,减去出现的管道

1 个答案:

答案 0 :(得分:3)

在你的情况下,

while (h >= 0)是一个无限循环:h在循环中没有被修改。