★前回の記事
前回までで、ピースの転置・反転のプログラムが作成できたので、残りのピースを作成します。 8パターンのスピンの作成については以下の記事を参照してください。
各spinは0番を始めとして矢印の順番で生成します。
前回までで0番と7番、1番のスピンを作成したので、今回は残りの6、2、5、3、4番を順に作成します。
function createKataminoSpinList(piece) { // 回転した形を格納する配列 let spinArray = [] spinArray[0] = copyArrayOfArray(piece) // 0番を転置したものが7番 spinArray[7] = transpose(spinArray[0]) // 7番をコピーして上下反転したものが1番 spinArray[1] = copyArrayOfArray(spinArray[7]).reverse() // 1番を転置したものが6番 spinArray[6] = transpose(spinArray[1]) // 6番をコピーして上下反転したものが2番 spinArray[2] = copyArrayOfArray(spinArray[6]).reverse() // 2番を転置したものが5番 spinArray[5] = transpose(spinArray[2]) // 5番をコピーして上下反転したものが3番 spinArray[3] = copyArrayOfArray(spinArray[5]).reverse() // 3番を転置したものが4番 spinArray[4] = transpose(spinArray[3]) console.log("spinArray", spinArray) return spinArray }
実行してみて、下記のようになって入れば成功です。
上記は以下の8つのスピンを表しています。(上記画像では7個しか表示されていませんので、実行結果をご自身でご確認ください)
ちなみに、以下のようにインデックス0,1,2..の順に格納しなかったのは、画面にスピンを順に表示したときに、裏返さず同じ向きで回転させた方がきれいだからです。
function createKataminoSpinList(piece) { // 回転した形を格納する配列を宣言する let spinArray = [] spinArray[0] = copyArrayOfArray(piece) spinArray[1] = transpose(spinArray[0]) spinArray[2] = copyArrayOfArray(spinArray[1]).reverse() spinArray[3] = transpose(spinArray[2]) spinArray[4] = copyArrayOfArray(spinArray[3]).reverse() spinArray[5] = transpose(spinArray[4]) spinArray[6] = copyArrayOfArray(spinArray[5]).reverse() spinArray[7] = transpose(spinArray[6]) console.log("spinArray", spinArray) return spinArray }
以上で各ピース、8パターンのスピンを作成することができました。
配列の中身は現在以下の図のように、各ピースに重複したスピンが含まれています。
次回は重複を取り除いていきます。
★次回の記事
★目次