2010 02 01

テトリスを作るの1

先日、テトリスを作ってみようと思い立ったのだな。 で、せっかくだから、どう考えて作っていったのか、その過程を残してみよう。 いつか見直す時のために。

まずは 「テトリスってどんなんだっけ?」 と、思い出しながら、大雑把に仕様を決めるところから。

ブロック
  • 正方形。
  • 4つ組み合わせてパターンを作る。
  • パターンによって決まる色を持つ。
  • ブロック同士は重ならない。
パターン
  • 隣接した4つのブロックから成る。
  • パターンは7種類

フィールド
  • ブロック/パターンが存在できる領域。
  • 幅が要素10個分ぐらい、高さが要素20個分ぐらいだった。 とりあえず、これでいいだろう。
パターンの出現と移動
  • フィールド上端からパターンが出現する。
  • パターンは、プレーヤーの操作で回転できる。
  • パターンは、プレーヤーの操作で左右に移動できる。
  • パターンは、プレーヤーの操作で下に移動できる。

    過去にやったものでは、下移動に次の2パターンがあった。

    1. 操作中のみ高速移動し、操作を停止すると、元の移動速度に戻る。
    2. 高速移動ではなく落下として、操作によってその時点で可能な最下位置まで一気に移動する。

    俺の趣味は後者なので、今回はこっちで実装することとする。

  • 回転/移動によってブロックが一つでもフィールド外に出る場合は、回転/移動できない。
  • パターンは、ある時間の後に、今の位置から、ブロック一つ分、下に移動する。
  • パターンは、それ以上下に行けなくなったら、固定のブロックとなる。
  • 現在のパターンが固定ブロックとなると、フィールド上端から次のパターンが出現する。
行消去
  • フィールドの行が固定ブロックで埋まると、その行を削除する。
  • 削除した行の上にある固定ブロックは、その列位置を保ったまま、削除した行数分だけ下に移動する。
  • 削除と、削除に伴う落下は一瞬で。

    俺の記憶では、列がブロックで埋まった時、ほぁんほぁんとその列が明滅してから、上のブロックが落下していた。 俺は、この視覚効果が今一つ好きになれなかったんだよね。 スパッと消えて欲しかったのだ。 幸い、すぐに消える方が実装も楽だろうし、今回はこっちで実装することとする。

ゲームとして
  • 出現するブロックはランダム。
  • 勝手に落下する速度はだんだん速くなる。
  • あるところまで速くなると、もとの速さに戻る。
得点
  • 同時に消去する列が多い方が得点が高い。

文章に書き出してみると意外に面倒だな。 って、今更何を言ってるんだ、俺は。

+

初雪。