好的,我有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");
*/
当我注释掉管道代码的其余部分时,我会得到一个功能正常的游戏,减去出现的管道
答案 0 :(得分:3)
while (h >= 0)
是一个无限循环:h在循环中没有被修改。