テトリスの改良

テトリスを改良しました.今回は落ちるブロックの部品は作らずに,四角だけです.一列揃ったら消すこともできます.プログラムはここにあります.

必要な部品はこの5つだけです.

ステージには次のように部品を並べます.

ブロックが落ちるメガネは次のように作ります.空白と青の四角を組み合わせて作ってます.前回と違って逆Lのブロックの絵を用意しているのではなく,青の四角を組み合わせて作ってます.見た目は同じですが,左右とも青の四角が4つ,空白が2つの部品からできています.

同じように,左右に動くのと回転も作ります.

さて,ここからが前回と異なるところです.前回は各部品ごとに下についたときに固まるメガネを作っていました.今回は四角の部品で作っていますから,固まるのは次の3つのメガネだけで済みます.


まず,青の四角が石に接したら自分も石になります.青の四角の左右に石があれば自分も石になります.

この方法で気になるのが

のようなときに,青の四角は石の横にあるので,これも石になってしまわないか,ということですが.メガネには優先度がありまして,メガネの中の絵の数が多いほど優先されます.それで,下に落ちることができる場合はそれが優先されて,もう落ちることができなくなったときに,接していたら石になります.

新しくブロックを作るのは,今回も上の丸をタッチします.これは,どのタイミングで新しいのを落とすのかの判定が難しいからですが.一定間隔でよければここは自動化できると思います.

一列が揃ったら消えるようにするには,

のようにします.爆発が消えたという状態です.これは順に上のものを落とすために使います.

盤面には3つの状態「空」「ブロック」「石」があるので,それぞれを下に落として,爆発は上に上がって行きます.

最後に一番上に達したら,爆発は,空白に変わります.つまりここで新たに空白が誕生したということです.

それでは実際に動いているところを見てみましょう.

左端に横にした逆Lが積まれて石になった状態で,右端に逆Lを入れようとしています.

入りました.

下の二つが石になります.

下の一列が揃ったので,消えました.

爆発が上に上がって行きます.

ここで新たにブロックが落ちてきました.

ここで,


のときに,真ん中の3つの空白は,

の二つのメガネに使われていますが,同時に二つのメガネに使われることはできません.ブロックが落ちるメガネが優先されるので,爆発はその場で止まって,

のようにずれます.さらにブロック自身もバラバラになって,
のように落ちて行きます.

実は前回の作り方では,ここで示したように,爆発が順に上に上がって行くのと,上からブロックが落ちてくるのが交差することができませんでした.途中で止まってしまいます.交差させるためには,新たにメガネが大量に必要になるのでした.

それで諸々考えて,ブロックを四角の組み合わせで作るようにしました.おかげで,石になる部分も簡単になりました.考えてみるとこの方がよい設計だったということです.

問題は,どうして最初からこういう設計にしなかったのかですが.最初の設計が間違っていた,ということなのですが,それに関してはまた別の話題です.間違った理由というのはなかなか面白いものです.

このブログを書き上げたところで,ひとつ思いつきました.全部空白になってしまったら,もう爆発は上に上がる必要はないので(爆発が確実にやって欲しいのは,空中に浮いた石を浮いた状態で下に下げることですから)


を追加すればよいのでした.これで,爆発とブロックが入れ替わる問題もあまり気にしなくてよくなります.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする