テトリスはプログラミング入門教材としてよく使われているらしく、インターネット上にも解説記事がたくさんあります。一方でそれらのほとんどが単純なテトリスであり、販売されているものと比較すると機能が不足しています。
そこでこの記事では、テトリスのガイドライン(Tetris Wiki)に従い、なるべく商用テトリスに近い機能を持ったテトリスを作ることを目指します。余裕があればGUIにもこだわりたいと思いますが、気力次第ですね。。。
初回は必要な機能をもとにクラスを設計します。なお、この記事では各機能の概要を述べるにとどめ、詳細については実装記事で言及することとします。
必要な機能(実装するクラス)
Tetromino
I, O, T, S, Z, J, Lの7種類あり、それぞれシアン, 黄色, 紫, 緑, 赤, 青, オレンジ色です。
今回Tetrominoが担当する操作は座標及び移動・回転操作のみとします。回転軸の決定はTetrionが行います。回転操作の詳細はTetrionの項目で述べます。
PlayField
テトリスが行われる盤面です。今回は幅10セル、高さ20セルのものを使用します。盤面はTetriminoの固定及び衝突判定を行います。
Tetrion
Tetriminoの操作やスコア計算を行うための機能を持ちます。
Tetrominoのランダム生成
Tetrominoは7種類を1セットとして、1セットの中でランダムに投下されます。その順序を決定する必要があります。Tetrominoごとに初期位置・向きが決まっているため、それらも決定します。
SRS (Super Rotation System)
Tスピンなどを行うために、条件に応じてTetrominoの回転軸を移動させる操作です。詳細はこちら。
TスピンやTetrisなどの技判定
PlayFieldの1列がTetrominoで満たされた場合にTetrominoが削除されます。それだけであれば実装は単純ですが、Tetrominoが揃うまでの手順によって技名がつく場合があります。これらの判定を行い、スコアに上乗せすることが目的です。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント