private bool ischeck(Token[] map,string side)
{
try
{
int k;
for (k = 0; k < 64; k++)
{
if (map[k] != null && map[k].getType() == "King" && map[k].getSide() == side)
break;
}
int x = map[k].getX();
int y = map[k].getY();
//check for pawn
if ((side == "b") ? y < 7 : y > 0)
{
if (x > 0 && map[getIndex(x - 1, (side == "b") ? y + 1 : y - 1)] != null &&
map[getIndex(x - 1, (side == "b") ? y + 1 : y - 1)].getType() == "Pawn" && map[getIndex(x - 1, (side == "b") ? y + 1 : y - 1)].getSide() != side)
{
return true;
}
if (x < 7 && map[getIndex(x + 1, (side == "b") ? y + 1 : y - 1)] != null &&
map[getIndex(x + 1, (side == "b") ? y + 1 : y - 1)].getType() == "Pawn" && map[getIndex(x + 1, (side == "b") ? y + 1 : y - 1)].getSide() != side)
{
return true;
}
}
//check for king
for (int i = 0; i < 8; i++)
{
int dx = King_move[i].X + x;
int dy = King_move[i].Y + y;
if (dx < 0 || dx > 7 || dy < 0 || dy > 7) continue;
if (map[getIndex(dx, dy)] != null && map[getIndex(dx, dy)].getType() == "King" && map[getIndex(dx, dy)].getSide() != side)
return true;
}
//check for knight
for (int i = 0; i < 8; i++)
{
int dx = Knight_move[i].X + x;
int dy = Knight_move[i].Y + y;
if (dx < 0 || dx > 7 || dy < 0 || dy > 7) continue;
if (map[getIndex(dx, dy)] != null && map[getIndex(dx, dy)].getType() == "Knight" && map[getIndex(dx, dy)].getSide() != side)
return true;
}
//check for castle&queen
for (int i = 0; i < 28; i++)
{
int dx = Castle_move[i].X + x;
int dy = Castle_move[i].Y + y;
if (dx < 0 || dx > 7 || dy < 0 || dy > 7) continue;
if (map[getIndex(dx, dy)] != null)
{
if ((map[getIndex(dx, dy)].getType() == "Castle" || map[getIndex(dx, dy)].getType() == "Queen")
&& map[getIndex(dx, dy)].getSide() != side)
return true;
i = ((i / 7) + 1) * 7 - 1;
}
}
//check for bishop&queen
for (int i = 0; i < 28; i++)
{
int dx = Bishop_move[i].X + x;
int dy = Bishop_move[i].Y + y;
if (dx < 0 || dx > 7 || dy < 0 || dy > 7) continue;
if (map[getIndex(dx, dy)] != null)
{
if ((map[getIndex(dx, dy)].getType() == "Bishop" || map[getIndex(dx, dy)].getType() == "Queen")
&& map[getIndex(dx, dy)].getSide() != side)
return true;
i = ((i / 7) + 1) * 7 - 1;
}
}
return false;
}
catch (Exception ex) { MessageBox.Show(ex.Message); return false; }
}