UVA 10196 - Check The Check (将军)(二)
oolean)
{
cout << "Game #" << gameCount
<< ": black king is in check." << endl;
}
break;
case 'r':
boolean = Rook(chessBoard, i, j, 'K');
if (boolean)
{
cout << "Game #" << gameCount
<< ": white king is in check." << endl;
}
break;
case 'R':
boolean = Rook(chessBoard, i, j, 'k');
if (boolean)
{
cout << "Game #" << gameCount
<< ": black king is in check." << endl;
}
break;
case 'b':
boolean = Bishop(chessBoard, i, j, 'K');
if (boolean)
{
cout << "Game #" << gameCount
<< ": white king is in check." << endl;
}
break;
case 'B':
boolean = Bishop(chessBoard, i, j, 'k');
if (boolean)
{
cout << "Game #" << gameCount
<< ": black king is in check." << endl;
}
break;
case 'q':
boolean = Queen(chessBoard, i, j, 'K');
if (boolean)
{
cout << "Game #" << gameCount
<< ": white king is in check." << endl;
}
break;
case 'Q':
boolean = Queen(chessBoard, i, j, 'k');
if (boolean)
{
cout << "Game #" << gameCount
<< ": black king is in check." << endl;
}
break;
case 'n':
boolean = Knight(chessBoard, i, j, 'K');
if (boolean)
{
cout << "Game #" << gameCount
<< ": white king is in check." << endl;
}
break;
case 'N':
boolean = Knight(chessBoard, i, j, 'k');
if (boolean)
{
cout << "Game #" << gameCount
<< ": black king is in check." << endl;
}
break;
default : break;
}
if (boolean)
{
break;
}
}
if (boolean)
{
break;
}
}
if (!boolean)
{
cout<< "Game #" << gameCount << ": no king is in check." << endl;
}
else
{
boolean = false;
}
gameCount++;
}
return 0;
}
/* 函数实现 */
bool blackChessPawn(char chess[SIZEX][SIZEY], int x, int y, char ch) //黑棋的pawn
{
int xx, yy;
xx = x+1;
yy = y-1;
if ((xx>=1) && (xx<=8) && (yy>=1) && (yy<=8) && (chess[xx][yy] == ch))
{
return true;
}
yy = y+1;
if ((xx>=1) && (xx<=8) && (yy>=1) && (yy<=8) && (chess[xx][yy] == ch))
{
return true;
}
return false; //没有构成将军
}
bool whiteChessPawn(char chess[SIZEX][SIZEY], int x, int y, char ch) //白棋的pawn
{
int xx, yy;
xx = x-1;
yy = y-1;
if ((xx>=1) && (xx<=8) && (yy>=1) && (yy<=8) && (chess[xx][yy] == ch))
{
return true;
}
yy = y+1;
if ((xx>=1) && (xx<=8) && (yy>=1) && (yy<=8) && (chess[xx][yy] == ch))
{
return true;
}
return false; //没有构成将军
}
bool Rook(char chess[SIZEX][SIZEY], int x, int y, char ch) //黑白棋的Rook
{
int i;
//判断垂直方向上半段
for (i=x-1; i>=1; i--)
{
if (chess[i][y] == ch)
{
return true;
}
if (chess[i][y] != '.') //如果有阻碍物
{
break;
}
}
//判断垂直方向下半段