さて、ゲーム、バード、ボードのクラスがあります。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");
*/
残りのパイプ コードをコメント アウトすると、機能しているゲームからパイプが表示されなくなります。