fall and fall

ゲーム、プログラミング、二次創作のことなどを書いています。

テトリスの仕様考察 1.ブロック・セル・ボード・座標

Unity 2D でテトリスを制作した際に、ブロック・セル・ボード・座標の仕様について考えました。これから、その内容について記載していきます。

関連記事

目次

  1. ブロックとセル
  2. ブロックの実装方法
  3. ブロックの回転について
  4. ボードと座標
  5. ボードのレンダリング

1. ブロックとセル

テトリスのブロックは、4つのセル(四角形)から構成されています。

2. ブロックの実装方法

ブロックを表現するために、以下の情報を使いました。

  • 軸の位置
  • 軸以外の位置(回転パターンに応じた相対位置)

これから、各ブロックについて詳細を記載していきます。

2.1. O字ブロック

O字ブロックは無回転になります。

セルの座標を (x, y) で表すと、セルの位置は以下の通りになります。

  • 軸:(0, 0)(落下や左右移動で変化)
  • 軸以外:(0, +1)(+1, +1)(+1, 0)

軸以外のセルは、軸からの距離(相対的な位置)で表現していて、軸が動いても変化しません。つまり、軸以外の位置は固定で持つことができます。

2.2. I, S, Z字ブロック

2回転するブロックは以下の通りです。

回転パターンに応じた相対位置が分かれば、ブロック全体を表現できます。

2.3. J, L, T字ブロック

4回転するブロックは以下の通りです。

3. ブロックの回転について

上の方法でブロックを実装すると、回転は厳密に回すわけではなくて、セルの位置を取得してブロックを再構成する形になります。

回転途中にぶつかるブロック(セル)が存在しても、次の相対位置がそれにぶつからなければOK、という実装方法になります。

4. ボードと座標

テトリスのプレイ画面を、下のように考えて実装しました。

図中の数字は、位置 (x, y) を示します。右に行くと x が増えて、上に行くと y が増えます。

座標は以下の3つに分けていて、それぞれの左下を (0, 0) にしています。

  • 中央:Main
  • 左:Hold
  • 右:Next

5. ボードのレンダリング

ゲーム内部で、座標の位置ごとに ID を覚えておきます。

例えば、以下の通りです。

  • 空:0
  • 壁:1
  • I字ブロック:2
  • O字ブロック:3

あとは、ID に応じた色を解決できれば画面表示ができます。

次の記事

今回の内容を前提に、当たり判定や基本動作の仕様も記載しています。

当たり判定・落下・左右移動・回転について