最初テトリスもどきを作成するときは適当に考えていたのですが、いろいろな技があることがわかりました。テトリスをしている人の動画をみると「Tスピン」のやり方を解説しているものもありました。

Tスピンはそのまま上から落下するだけではハマらない隙間に対して、Tミノを回転させてねじ込むテクニックです。

なぜ通常ハマらない隙間にねじ込むことができるのでしょうか?

なぜ入る? これはテトリスのガイドラインを理解する必要があります。

ガイドラインの主な仕様の項目に「スーパーローテーションシステム」があります。

従来のテトリスではテトリミノが壁にくっついている場合や地面に横倒しにして寝かせた場合は回転させることができません。これに対してスーパーローテーションは、テトリミノの回転方向に他のブロックや壁等があった場合、それに重ならないように状況に応じて回転軸を移動させて回転させるシステムです。どのような場合、どのように回転軸が変化するかを理解することで、なぜ入るのかが理解できるようになります。

ミノは回転軸を中心に左右90度回転します。これまで作成してきた自作テトリスでは4×4マスの中心を回転軸にしましたが、これはガイドラインに合致していません。

回転の法則については

Tetrisちゃんねる

に書かれているので、参考にさせていただきました。

まずOミノは回転させても同じ形なので考える必要はありません。それからIミノはちょっと特殊なので後回しにします。

I、O以外の5つのミノが回転するときは以下のような規則になっています。

回転軸を中心に回転させる。これで問題なく回転できるならそれでよし。

もし障害物があって回転できないときは回転軸を左右に動かします。右に動かすか左に動かすかは現在、基本形からどれだけ回転しているか、回転は左右のどちら向きなのかなどの要素がからんできます。

基準になる状態からすでに90度回転しているものを回転させる場合は左へずらします。270度回転している場合は右へずらします。また基準になる状態から回転していない場合、180度回転している場合は回転させようとしている逆方向へ移動させます。

これでも回転させることができない場合は、ずらした状態から上下にずらします。90度回転している場合と270度回転している場合は上へずらします。0度と180度の場合は下へずらします。

それでも回転させることができない場合は回転軸を元の位置に戻して、そこから上下に2マスずらします。90度回転しているものや270度回転しているのであれば下へずらします。0度と180度の場合は上へ移動させます。

それでも回転させることができない場合は上下にずらした状態からさらに左右にずらします。左右というのは最初にずらした方向と同じです。

詳しくはリンク先を参照してください。

Tetrisちゃんねる

それからIミノに関してですが、まず通常の回転ができない場合は軸を左右に動かします。基準の状態から90度回転している場合は右側に、270度回転しているときは左へ移動します。0度のときと180度の場合は回転した方向の逆へ移動します(0度なら2マス移動させる)。

これでも回転できないときは回転軸をもう一度左右に動かします。90度の場合は左に、270度のときは右へ移動させます。0度の場合や180度の場合は回転した方向へ移動させます。180度の場合は2マス移動させます。

これでも回転できないときは軸を上下に動かします。90度の場合は最初に動かした位置から下に、270度の場合は上へ移動させます。0度と180度の場合は回転前のミノが右半分にあるなら上へ、そうでないなら下へ移動させます。

これでも回転させることができない場合はもう一度軸を上下に動かします。90度の場合は2を上、270度の場合は2を下へ移動させます。回転前が0度のときと180度の場合は回転前のミノを上下に動かします。

次回からはスーパーローテーションシステム対応のテトリスを作成することにします。