クラスの構成:
BlockBreakクラス⇒ゲーム本体のクラス,Bar,Ball,Blockのインスタンスを作り,配置,動かす,描画するのはこのクラスの役目
Barクラス,Ballクラス,Bloackクラス⇒それぞれ名前の通り
/** * ブロック崩し */ class BlockBreak { //ブロック数設定 final int blockNumX = 20; // x軸方向のブロック数(適当に 変えてもOK) final int blockNumY = 5; // y軸方向のブロック数(適当に 変えてもOK) final int blockNumAll = blockNumX * blockNumY; // 総ブロック数 //ブロック関連の初期値や固定値の設定 final int blockX_init = 0; // ブロック位置x軸初期値 int blockX = 0; // ブロック位置x軸 int blockY = 35; // ブロック位置y軸 // 各オブジェクト定義 Ball ball; // ボール定義 Bar bar; // バー定義 Block[][] block; // ブロック配列定義 // コンストラクタ BlockBreak() { // ボールの生成 ball = new Ball(width / 4, height / 3, 2, 5, 8); // バーの生成 bar = new Bar(width / 5, height / 100); // ブロック配列を生成 block = new Block[blockNumY][blockNumX]; // ブロックのサイズを決定 int blockSizeX = width / blockNumX; int blockSizeY = height / 30; // ブロック群を生成 [回答欄] //2次元(X,Y方向)にブロックを置いていくので,2重forループの出番 for(int y = ???){ for(int x = ???){ block[y][x] = new Block(blockX + x * blockSizeX, ???); } } } /** 1フレームごとの描画処理 */ void draw() { int breakBlockNum = 0; // 壊れているブロックの数を初期化 // 全てのブロックの破壊判定と描画 [回答欄] // クリアしているかの判定のため、壊れているブロックの数をカウントもしておく // ヒント: ブロックが消滅している場合、ブロックの衝突判定も描画も行わない //2重forループを使ってすべてのブロックに対して壊れているかどうか調査する //壊れてなかったらそのブロックを描く for(int y = ???){ for(int x = ???){ if (block[y][x].isBroken()){ ??? }else{ block[y][x].???(); block[y][x].collision(ball); } } } // ブロックが残っているならばボール移動 if(breakBlockNum < blockNumAll) { ball.move(); // ボールの移動処理 if(ball.collision() == false) { // 壁との衝突判定 fill(0, 0, 0); textSize(35); textAlign(CENTER, CENTER); text("Game Over!!", width / 2, height / 2); } else { bar.collision(ball); // バーとの衝突判定 } } else { // ブロックがすべて壊れているならば textSize(35); textAlign(CENTER, CENTER); // テキストの配置を整える text("Clear!!", width / 2, height / 2); // クリア表示 } fill(0, 0, 0); textSize(12); textAlign(CENTER, CENTER); text("Block:" + (blockNumAll - breakBlockNum), width - 40, height - 25); // 残りブロック数表示 bar.show(); // ボールを打ち返すためのボードを表示 ball.show(); // ボールの描画 } }