桂馬の動きは非常に単純で5x5の盤面の場合、+9と+11の場所には動けるということになります。ただし端っこの列にいるときは片側しか動けないので、その部分はif文で分けてあげる必要があります。それから、桂馬は動けない盤面の上のほうには打てないので、それも処理を分けてあげる必要があります。
else if (Naru == false && Shu == 1 && PhotonNetwork.player.ID == 1)//桂馬の場合 { if (masuHandler.masuNum == 26 || masuHandler.masuNum == 0) { if (field == 0) { int i; for (i = 16; i < 26; i++) { Masu[i].GetComponent<BoxCollider2D>().enabled = false; Masu[i].GetComponent<MeshRenderer>().enabled = false; } } else { int i; for (i = 11; i < 26; i++) { Masu[i].GetComponent<BoxCollider2D>().enabled = false; Masu[i].GetComponent<MeshRenderer>().enabled = false; } } } else if (masuHandler.masuNum == 12 || masuHandler.masuNum == 13 || masuHandler.masuNum == 14 || masuHandler.masuNum == 17 || masuHandler.masuNum == 18 || masuHandler.masuNum == 19 || masuHandler.masuNum == 22 || masuHandler.masuNum == 23 || masuHandler.masuNum == 24) { Masu[masuHandler.masuNum - 11].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 11].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 9].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 9].GetComponent<MeshRenderer>().enabled = false; } else if (masuHandler.masuNum == 11 || masuHandler.masuNum == 16 || masuHandler.masuNum == 21) { Masu[masuHandler.masuNum - 9].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 9].GetComponent<MeshRenderer>().enabled = false; } else if (masuHandler.masuNum == 15 || masuHandler.masuNum == 20 || masuHandler.masuNum == 25) { Masu[masuHandler.masuNum - 11].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 11].GetComponent<MeshRenderer>().enabled = false; } }
打ち駒の場合とそうではない場合は、fieldという打ち駒固有の整数値によって、打てる場所を制限して場合分けをしています。
王様の動きは5x5の盤面の場合+4、+5、+6、+1、-1、-4、-5、-6の場所に動けるということになります。金の場合と場合分けは一緒ですね。
else if (Naru == false && Shu == 4 && PhotonNetwork.player.ID == 1)//玉の場合 inu { if (masuHandler.masuNum == 26 || masuHandler.masuNum == 0) { if (field == 0) { int i; for (i = 16; i < 26; i++) { Masu[i].GetComponent<BoxCollider2D>().enabled = false; Masu[i].GetComponent<MeshRenderer>().enabled = false; } } else { int i; for (i = 1; i < 26; i++) { Masu[i].GetComponent<BoxCollider2D>().enabled = false; Masu[i].GetComponent<MeshRenderer>().enabled = false; } } } else if (masuHandler.masuNum < 6)//上段の場合 { if (masuHandler.masuNum % 5 == 2 || masuHandler.masuNum % 5 == 3 || masuHandler.masuNum % 5 == 4)//真ん中にいるとき { Masu[masuHandler.masuNum + 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 4].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 4].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 6].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 6].GetComponent<MeshRenderer>().enabled = false; } else if (masuHandler.masuNum % 5 == 1) //左端にいるとき { Masu[masuHandler.masuNum + 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 6].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 6].GetComponent<MeshRenderer>().enabled = false; } else if (masuHandler.masuNum % 5 == 0 && masuHandler.masuNum != 0) //右端にいるとき { Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 4].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 4].GetComponent<MeshRenderer>().enabled = false; } } else if (masuHandler.masuNum > 20)//下段の場合 { if (masuHandler.masuNum % 5 == 2 || masuHandler.masuNum % 5 == 3 || masuHandler.masuNum % 5 == 4)//真ん中にいるとき { Masu[masuHandler.masuNum - 4].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 4].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 6].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 6].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<MeshRenderer>().enabled = false; } else if (masuHandler.masuNum % 5 == 1) //左端にいるとき { Masu[masuHandler.masuNum - 4].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 4].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; } else if (masuHandler.masuNum % 5 == 0 && masuHandler.masuNum != 0) //右端にいるとき { Masu[masuHandler.masuNum - 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 6].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 6].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<MeshRenderer>().enabled = false; } } else//中段の場合 { if (masuHandler.masuNum % 5 == 2 || masuHandler.masuNum % 5 == 3 || masuHandler.masuNum % 5 == 4)//真ん中にいるとき { Masu[masuHandler.masuNum - 4].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 4].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 6].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 6].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 4].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 4].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 6].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 6].GetComponent<MeshRenderer>().enabled = false; } else if (masuHandler.masuNum % 5 == 1)//左端にいるとき { Masu[masuHandler.masuNum - 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 4].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 4].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 6].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 6].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<MeshRenderer>().enabled = false; } else if (masuHandler.masuNum % 5 == 0 && masuHandler.masuNum != 0)//右端にいるとき { Masu[masuHandler.masuNum - 6].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 6].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 5].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum - 1].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 4].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 4].GetComponent<MeshRenderer>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<BoxCollider2D>().enabled = false; Masu[masuHandler.masuNum + 5].GetComponent<MeshRenderer>().enabled = false; } } }
これで、全駒の動きをガイドすることができるようになりました。次は成駒と打ち駒の動きを考えていきたいと思います。