androidアプリでテトリスを作成しています。
ゲームオーバー処理を書きたいのですがどのように実装したらいいかがわかりません。
関連する部分のソースコードを載せます。
//ブロックが存在してもいい位置か判定 boolean check(int[][] block, int offsetx, int offsety) { if (offsetx < 0 || offsety < 0 || mapHeight < offsety + block.length || mapWidth < offsetx + block[0].length) { return false; } for (int y = 0; y < block.length; y++) { for (int x = 0; x < block[y].length; x++) { if (block[y][x] != 0 && map[y + offsety][x + offsetx] != 0) { return false; } } } return true; } //ブロックを落とす処理 private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (count == 0) { switch (msg.what) { case INVALIDATE: invalidate(); break; case DROPBLOCK: if (check(block, posx, posy + 1)) { posy++; } else { //新しいブロックを画面の一番上に設置する処理 mergeMatrix(block, posx, posy); //そろった列を消す処理 clearRows(); posx = 4; posy = 0; block = block1; block1 = blocks[mRand.nextInt(blocks.length)]; //次落ちてくるブロックを表示させる処理 mergeMatrix1(block1, 0, 0); } invalidate(); Message massage = new Message(); massage.what = DROPBLOCK; sendMessageDelayed(massage, 500); break; } } } };
checkメソッドの中にゲームオーバーになったかどうかを判断できるif文を追加して、count=1処理をしたいのですが、ゲームオーバーになったかどうかを判断する方法がわかりません。
今のままですと画面がブロックでいっぱいになっても降り続けます。
ブロックは下に行くほどposyの値が大きくなります。
ブロックが下に積み重なっているブロックに重なったときのposyがわかればできると思うのですがどうすればいいでしょうか。
回答1件
あなたの回答
tips
プレビュー