javascript(テトリス004_ピースの回転2)
■ピースを回転させるロジックの続き。
前回、下の図の(1,1)を取り上げて、回転させるロジックを考えてみた。その結果、+10(下へ)、-1(左へ)、-10(上へ)、+1(右へ)を繰り返す形になった。同様に他の部分も考えてみる。
右の図はIDの番号で示したもの。
この図で、例えば(1,2)では、右上にある状態(24)から移動量の+21を加えると、回転させた先の右下(45)になる。4×4マス分あれば、テトリスへの拡張も対応できそう。
なお、3×3マスで考えた場合は下のような感じ。
前回試した下のような図では、3マスのそれぞれが同じ動きをするので、、+10(下へ)、-1(左へ)、-10(上へ)、+1(右へ)のみで良かったけど、マス毎に違う動きをする場合は、それぞれに1回転で4つの移動量の数字を用意する必要がありそう。
例えば、下のような図では、真ん中のマスとそれ以外では別の動きとなる。
ピースの初期配置を決めた上で、配列として、1マス目、2マス目、3マス目の移動量を用意する。
let addArray = [[+10, -1, -10, +1], [-1, -10, +1, +10], [-10, +1, +10, -1]]
下の初期配置の場合、1度回転させると、1マス目は+10、2マス目は-1、3マス目は-10と、配列の1番目が使用される。このケースは同じ動きになっているけど、これでそれぞれ独立した動かし方ができる。
3マスのピースで実行した結果が下のもの。行を揃えることより、積み上げて動作確認している。
ここまでの検討で、4マスへの拡張も問題なく行えるはずなので次回は4マスで試した後、バグ取りやデザインなど詰めていきたい。