Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

TETRIN

2018/02/05 13:25:26

TETRIN

永谷 弘宣

永谷 弘宣

『TETRIN(てとりん)』は、四つのブロックから構成される「テトリミノ」を操作して遊ぶ落ち物パズルゲームです。

【ルール】
テトリミノがフィールドの上部から落ちて来ます。
テトリミノがフィールド最下部か他の固定されたテトリミノに接地すると、
そのテトリミノは固定され、次のテトリミノが画面上から落ちて来ます。

フィールドの段がブロックで埋め尽くされると、その段は消去され得点になります。

次のテトリミノが表示された際に、そのテトリミノがブロックに重なっているとゲームオーバーです。

フィールドの右側には次のテトリミノと、得点が表示されています。
得点の「:」(コロン)の右側の数字が同時に消した段数で、左側が消した回数です。

【操作】
←→ : テトリミノを左右に移動させる
↑ : テトリミノを回転させる
↓ : テトリミノを落下させる
SPACE : テトリミノを接地するまで落下させる
    (テトリミノが固定されるまで遊び時間があります。
     待ちたくない場合は↓押下で固定して下さい)

【更新履歴】
2018/02/05 初版公開
2018/02/06 コードの最適化、SPACE押下でテトリミノを接地するまで落下させる機能を追加
2018/02/07 フィールドの段数を20段から22段に変更
      (公式には20段だそうですが、次のブロックの高さの2段分を増加させました)
2018/02/08 タイトルを「TETRIN(てとりん)」に変更
      (「テトリス」は登録商標とご指摘を頂きました)

【ソースコード解説】
《変数》
T : Tetrimino, テトリミノの形状( 0 〜 6 の 7 種類)
U : 次のテトリミノの形状( 0 〜 6 の 7 種類)
K : Key, キー入力値
W : Wait, テトリミノ落下までのカウント
F : Flag, テトリミノ接地判定フラグ
C : Character, テトリミノのブロック描画のキャラクタ( 0 ~ 3 の 4 種類)
X : テトリミノのブロック描画の X 座標
Y : テトリミノのブロック描画の Y 座標
Z : 一時変数(X と Y を求めるために利用)
S : Shift, 配列の添字のシフト値( 0, 3 の 2 種類。 X と Y を求めるために利用)
L : Line, 同時に消去された段数のカウント
A : Address, アドレスの保持(段の消去時に利用)
I,J : Iterator, ループ変数

《配列》
[0] : キー入力後のテトリミノの X 座標
[1] : キー入力後のテトリミノの Y 座標
[2] : キー入力後のテトリミノの回転の状態( 0 ~ 3 の 4 種類)
[3] : テトリミノの X 座標
[4] : テトリミノの Y 座標
[5] : テトリミノの回転の状態( 0 ~ 3 の 4 種類)

----

[6] 〜 [33] : テトリミノのブロックの描画座標

16 bit を 4 つの 4 bit に区切り、4つのブロックの描画座標を保持しています。
4 bit のうち、上位 2 bit が X 座標、下位 2 bit が Y 座標です。

[6] 〜 [9] : テトリミノの形状が 0 のテトリミノ(I-テトリミノ)
[6] : テトリミノの回転の状態が 0 のテトリミノのブロックの描画座標
[7] : テトリミノの回転の状態が 1 のテトリミノのブロックの描画座標
[8] : テトリミノの回転の状態が 2 のテトリミノのブロックの描画座標
[9] : テトリミノの回転の状態が 3 のテトリミノのブロックの描画座標
(以下、テトリミノの回転の状態は上記と同様のルールに従います)

[10] 〜 [13] : テトリミノの形状が 1 のテトリミノ(O-テトリミノ)
[14] 〜 [17] : テトリミノの形状が 2 のテトリミノ(S-テトリミノ)
[18] 〜 [21] : テトリミノの形状が 3 のテトリミノ(Z-テトリミノ)
[22] 〜 [25] : テトリミノの形状が 4 のテトリミノ(J-テトリミノ)
[26] 〜 [29] : テトリミノの形状が 5 のテトリミノ(L-テトリミノ)
[30] 〜 [33] : テトリミノの形状が 6 のテトリミノ(T-テトリミノ)

----

[34] 〜 [47] : 次のテトリミノを表現するセミブロック

2つのセミブロックで次のテトリミノを表現しています。

[34] 〜 [35] : テトリミノの形状が 0 のテトリミノ(I-テトリミノ)
[36] 〜 [37] : テトリミノの形状が 1 のテトリミノ(O-テトリミノ)
[38] 〜 [39] : テトリミノの形状が 2 のテトリミノ(S-テトリミノ)
[40] 〜 [41] : テトリミノの形状が 3 のテトリミノ(Z-テトリミノ)
[42] 〜 [43] : テトリミノの形状が 4 のテトリミノ(J-テトリミノ)
[44] 〜 [45] : テトリミノの形状が 5 のテトリミノ(L-テトリミノ)
[46] 〜 [47] : テトリミノの形状が 6 のテトリミノ(T-テトリミノ)

----

[48] 〜 [51] : 得点

[48] : 一段消しが行われた回数
[49] : 二段消しが行われた回数
[51] : 三段消しが行われた回数
[51] : 四段消しが行われた回数

《コード》
5 : タイトル
10 〜 15 : 初期化
20 〜 25 : キー入力受付
30 〜 36 : テトリミノの移動と固定
40 〜 45 : 次のテトリミノ配置とゲームオーバー処理
50 : F の算出
60 : X と Y の算出
70 : テトリミノのブロック描画
80 〜 86 : 段の消去

【その他】
プログラムの容量の都合で「T-Spin(Tスピン)」は行なえません。

GOOD

Programmers marked as favorites.2 programmers

Kidspod運営チーム
Kidspod運営チーム
2018/02/10 18:21:52
ato5fun
ato5fun
2018/02/07 12:01:28