★前回の記事
前回、もととなるピースの配列を作成しました。 ここから各ピースを転置・反転したものを作成していきます。
現在各ピースは、
[ [1, 1, 1, 0], [0, 0, 1, 1] ]
のように2次元配列で表現されています。これを最終的には(最大で)8種類の回転・反転したものを求め、ピースが存在する場所のリストで表します。
例えば、以下のピースだと、
もとの配列は以下で、
[ [1, 1, 1, 1], [0, 1, 0, 0] ]
最終的に作成する配列は以下のようになります。
[ [{"x":0,"y":0},{"x":0,"y":1},{"x":0,"y":2},{"x":0,"y":3},{"x":1,"y":1}], // 0番のspin [{"x":0,"y":0},{"x":1,"y":0},{"x":2,"y":0},{"x":2,"y":1},{"x":3,"y":0}], // 1番のspin [{"x":0,"y":2},{"x":1,"y":0},{"x":1,"y":1},{"x":1,"y":2},{"x":1,"y":3}], // 2番のspin [{"x":0,"y":1},{"x":1,"y":0},{"x":1,"y":1},{"x":2,"y":1},{"x":3,"y":1}], // 3番のspin [{"x":0,"y":1},{"x":1,"y":0},{"x":1,"y":1},{"x":1,"y":2},{"x":1,"y":3}], // 4番のspin [{"x":0,"y":1},{"x":1,"y":1},{"x":2,"y":0},{"x":2,"y":1},{"x":3,"y":1}], // 5番のspin [{"x":0,"y":0},{"x":0,"y":1},{"x":0,"y":2},{"x":0,"y":3},{"x":1,"y":2}], // 6番のspin [{"x":0,"y":0},{"x":1,"y":0},{"x":1,"y":1},{"x":2,"y":0},{"x":3,"y":0}] // 7番のspin ]
この配列の各要素と順番は以下の8種類の回転・反転に対応しています。(参考:
)
これ以降、この各回転・反転のことをスピン(spin
)と呼びます。
プログラミングしていきましょう。
KATAMINO_ORG_ARRAYの各要素を変換していくので、map
関数を使います。mapの中で、createKataminoSpinList
関数を呼んでいます。この関数は、各ピースから、そのピースのスピンを求め、それぞれのスピンのピースの場所をリストで表現したものを返します。
const KATAMINO_ARRAY = KATAMINO_ORG_ARRAY.map(piece => createKataminoSpinList(piece)) /* * 各ピースを回転・反転した時のピースの場所のリストを作成する */ function createKataminoSpinList(piece) { console.log("piece", piece) return piece }
出力が以下のようになっていればOKです。
以上で最終的に出来上がる配列とmapを使用してピースの回転リストを作成する準備ができました。
★次回の記事
★目次