C++初歩8 テトリス風ゲーム
C++初歩8 テトリス風ゲーム
前章で作成した迷路脱出ゲームのプログラムを、テトリス風ゲームに仕立て直すに当たり、不要なクラスを削除し、エラーの無い状態にします。
また、テトリス風ゲームの背景画面は写真を表示する様にしますので、その背景表示の部分を作成します。
テトリスゲームのフレームと、フレームの横に得点等(SCORE, LINES, LEVEL)を表示します。
フレームは画像ファイルを使って表示し、得点等はフォントサイズと文字の太さを指定したテキストの表示を行います。
7種類のテトリミノ(I型, O型, T型, L型, J型, S型, Z型)を作成し、表示します。
テトリミノの形を定義したクラス(Tetrimino)はSingletonパターンで作成します。
7-bagルールとは、テトリスゲームの仕様を定めた国際標準の中で定められたルールで、7種類のテトリミノは、7回をサイクルに必ず1巡するというものです。
この7-bagルールは、1つのテトリミノを扱うBlockクラスのコンストラクタで実装します。
テトリミノを落下させるフィールドに格子状のグリッドを表示させます。
落下開始するテトリミノと次のテトリミノを生成し、次のテトリミノは、フィールドの上に表示します。テスト的に、Exterキーを押すと、次のテトリミノに変わるようにします。
フィールドに表示したテトリミノが自動的に落下するようにします。ただ、フィールドの壁を意識していない為、この回では、フィールドの下を通過してしまう状態です。
落下しているテトリミノが、フィールドの一番下に到達したならば消えて、自動的に次のテトリミノが落下するようにします。
落下しているテトリミノが、フィールドの一番下に到達したならばフィールドに固定化します。
次に落ちてくるテトリミノは、固定化したテトリミノにぶつかると、そこで固定化します。積み上がったテトリミノと次に落下するテトリミノが重なってしまう場合は、ゲームオーバーにします。
今回から、効果音を追加します。テトリミノが固定化した時と、ゲームオーバになった時に音を鳴らします。
以下のキーに応じた処理を追加する。
左右の方向キー :左右に移動
下方向キー :急速落下(ハードドロップ)
上方向キー :右に90°回転
テトリミノを固定化した時、横一列に四角形が埋まったならば、そのラインを消去し、上に積まれた四角形が一段下がるようにします。
ライン消去が発生した時、その時消去されるライン数によって得点が加算されるようにします。
また、消去されたラインの合計に応じて、レベルがアップするようにして、レベルアップした時に背景が変わるようにします。用意した背景の画像数を超えたならば、ゲームクリアにします。
これで、一先ずゲームは完成とします。