
桂馬の動きは非常に単純で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;
}
}
}
これで、全駒の動きをガイドすることができるようになりました。次は成駒と打ち駒の動きを考えていきたいと思います。









