I am Trying to make a code to move the bishop in a chess game. When I play the game, the bishop can’t be moved top right or bottom right. Anyone know how to fix.
public class Bishop : Chessman
{
public override bool[,] PossibleMove()
{
bool[,] r = new bool[8, 8];
Chessman c;
int i, j;
//Top Left
i = CurrentX;
j = CurrentY;
while (true)
{
i--;
j++;
if (i < 0 || j >= 8)
break;
c = BoardManager.Instance.Chessmans[i, j];
if (c == null)
r[i, j] = true;
else
{
if (isWhite != c.isWhite)
r[i, j] = true;
break;
}
}
//Top Right
i = CurrentX;
j = CurrentY;
while (true)
{
i--;
j++;
if (i < 0 || j >= 8)
break;
c = BoardManager.Instance.Chessmans[i, j];
if (c == null)
r[i, j] = true;
else
{
if (isWhite != c.isWhite)
r[i, j] = true;
break;
}
}
//Down Left
i = CurrentX;
j = CurrentY;
while (true)
{
i--;
j--;
if (i < 0 || j < 0)
break;
c = BoardManager.Instance.Chessmans[i, j];
if (c == null)
r[i, j] = true;
else
{
if (isWhite != c.isWhite)
r[i, j] = true;
break;
}
}
//Down Right
i = CurrentX;
j = CurrentY;
while (true)
{
i--;
j++;
if (i < 0 || j >= 8)
break;
c = BoardManager.Instance.Chessmans[i, j];
if (c == null)
r[i, j] = true;
else
{
if (isWhite != c.isWhite)
r[i, j] = true;
break;
}
}
return r;
}
}