まずは,テトリスアプリを作るにあたって,テトリスアプリで必要となる機能を以下でまとめる.
必要機能
- ブロックを表示するための場所 (プログラム上では配列) を表示する.
- 一定時間 (1,200 ms) 経ったら,ブロックを1つ下に落とす.
- 左右下矢印ボタン (← or → or ↓) が押されたら,ブロックを対応する方向に1つずらす.
- Rotate ボタンを押されたら,ブロックを時計回りに回転させる.
- ボタンを押しても回転や移動ができない場合(以下の2パターン)は.ボタンを押してもブロックが回転や移動をしないようにする.
- 回転や移動をすると所定のマップからブロックがはみ出てしまうケース
- すでにブロックがある位置に回転や移動したあとのブロックが重なってしまうケース
- ブロックの種類は7種類とする.
- ブロックが一列に並んだらその列を削除する.
- 積まれたブロックが上段まで達したら GAME OVER とする.
- gameOverFlag という boolean 型の変数を用意し, GAME OVER 時このフラッグを true にする.
- gameOverFlag が true になったら,その後 Reflesh ボタンを押されないと新しいブロックは生成されない.
- ランダムでブロックの形を変更する機能
- ブロックの初期化処理 init() でランダムにブロックを生成できるようにした.
- Reflesh ボタンによって GAME OVER 時にマップを初期化できる.
実装
実装コードは以下のgithubに載せているのでご参考まで.
https://github.com/remmaTech12/tetris
CanvasView.java | 画面の制御 |
Blocks.java | ブロックの生成・移動・回転灯の処理 |
MainActivity.java | 初期設定・コールバック関数の登録 |
プレイ動画
プレイ動画はこんな感じ.
製作期間
2週間程度
コメント