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 : 段の消去

PLAY

Programmers played with this program.4 programmers

だくん
だくん
2018/06/03 15:24:10
ふうせん Fu-sen.
ふうせん Fu-sen.
2018/02/17 13:42:43
Kidspod運営チーム
Kidspod運営チーム
2018/02/10 18:21:50
ato5fun
ato5fun
2018/02/07 11:58:52