テトリスを作るの1
先日、テトリスを作ってみようと思い立ったのだな。 で、せっかくだから、どう考えて作っていったのか、その過程を残してみよう。 いつか見直す時のために。
まずは 「テトリスってどんなんだっけ?」 と、思い出しながら、大雑把に仕様を決めるところから。
- ブロック
-
- 正方形。
- 4つ組み合わせてパターンを作る。
- パターンによって決まる色を持つ。
- ブロック同士は重ならない。
- パターン
-
- 隣接した4つのブロックから成る。
-
パターンは7種類
- フィールド
-
- ブロック/パターンが存在できる領域。
- 幅が要素10個分ぐらい、高さが要素20個分ぐらいだった。 とりあえず、これでいいだろう。
- パターンの出現と移動
-
- フィールド上端からパターンが出現する。
- パターンは、プレーヤーの操作で回転できる。
- パターンは、プレーヤーの操作で左右に移動できる。
-
パターンは、プレーヤーの操作で下に移動できる。
過去にやったものでは、下移動に次の2パターンがあった。
- 操作中のみ高速移動し、操作を停止すると、元の移動速度に戻る。
- 高速移動ではなく落下として、操作によってその時点で可能な最下位置まで一気に移動する。
俺の趣味は後者なので、今回はこっちで実装することとする。
- 回転/移動によってブロックが一つでもフィールド外に出る場合は、回転/移動できない。
- パターンは、ある時間の後に、今の位置から、ブロック一つ分、下に移動する。
- パターンは、それ以上下に行けなくなったら、固定のブロックとなる。
- 現在のパターンが固定ブロックとなると、フィールド上端から次のパターンが出現する。
- 行消去
-
- フィールドの行が固定ブロックで埋まると、その行を削除する。
- 削除した行の上にある固定ブロックは、その列位置を保ったまま、削除した行数分だけ下に移動する。
-
削除と、削除に伴う落下は一瞬で。
俺の記憶では、列がブロックで埋まった時、ほぁんほぁんとその列が明滅してから、上のブロックが落下していた。 俺は、この視覚効果が今一つ好きになれなかったんだよね。 スパッと消えて欲しかったのだ。 幸い、すぐに消える方が実装も楽だろうし、今回はこっちで実装することとする。
- ゲームとして
-
- 出現するブロックはランダム。
- 勝手に落下する速度はだんだん速くなる。
- あるところまで速くなると、もとの速さに戻る。
- 得点
-
- 同時に消去する列が多い方が得点が高い。
文章に書き出してみると意外に面倒だな。 って、今更何を言ってるんだ、俺は。
+
初雪。