UVA 10196 - Check The Check (将军)(三)
for (i=x+1; i<=8; i++)
{
if (chess[i][y] == ch)
{
return true;
}
if (chess[i][y] != '.') //如果有阻碍物
{
break;
}
}
//判断水平方向左半段
for (i=y-1; i>=1; i--)
{
if (chess[x][i] == ch)
{
return true;
}
if (chess[x][i] != '.') //如果有阻碍物
{
break;
}
}
//判断水平方向右半段
for (i=y+1; i<=8; i++)
{
if (chess[x][i] == ch)
{
return true;
}
if (chess[x][i] != '.') //如果有阻碍物
{
break;
}
}
return false; //没有构成将军
}
bool Bishop(char chess[SIZEX][SIZEY], int x, int y, char ch) //黑白棋的Bishop
{
int xx; //行数
int yy; //列数
int Min; //最小值。8*8的图中,行数和列数相同
int startX; //开始行
//int startY; //开始列
int i, j;
//判断左上角
xx = x-1;
yy = y-1;
if (xx < yy)
{
Min = xx;
}
else
{
Min = yy;
}
startX = x-Min;
//startY = y-Min;
//for (i=startX, j=startY; i
for (i=x-1, j=y-1; i>=startX; i--, j--)
{
if (chess[i][j] == ch)
{
return true;
}
if (chess[i][j] != '.') //如果有障碍物
{
break;
}
}
//判断右上角
xx = x-1;
yy = 8-y;
if (xx < yy)
{
Min = xx;
}
else
{
Min = yy;
}
startX = x-Min;
//startY = y+Min;
//for (i=startX, j=startY; i
if (chess[i][j] != '.') //如果有障碍物
for (i=x-1, j=y+1; i>=startX; i--, j++)
{
if (chess[i][j] == ch)
{
return true;
}
{
break;
}
}
//判断左下角
xx = 8-x;
yy = y-1;
if (xx < yy)
{
Min = xx;
}
else
{
Min = yy;
}
startX = x+Min;
//startY = y-Min;
//for (i=startX, j=startY; j
for (i=x+1, j=y-1; i<=startX; i++, j--)
{
if (chess[i][j] == ch)
{
return true;
}
if (chess[i][j] != '.') //如果有障碍物
{
break;
}
}
//判断右下角
xx = 8-x;
yy = 8-y;
if (xx < yy)
{
Min = xx;
}
else
{
Min = yy;
}
startX = x+Min;
//startY = y+Min;
//for (i=startX, j=startY; i>x; i--, j--)
for (i=x+1, j=y+1; i<=startX; i++, j++)
{
if (chess[i][j] == ch)
{
return true;
}
if (chess[i][j] != '.') //如果有障碍物
{
break;
}
}
return false; //不构成将军
}
bool Queen(char chess[SIZEX][SIZEY], int x, int y, char ch) //黑白棋的Queen
{
int xx; //行数
int yy; //列数
int Min; //最小值。8*8的图中,行数和列数相同
int startX; //开始行
//int startY; //开始列
int i, j;
//判断左上角
xx = x-1;
yy = y-1;
if (xx < yy)
{
Min = xx;
}
else
{
Min = yy;
}
startX = x-Min;
//startY = y-Min;
//for (i=startX, j=startY; i
for (i=x-1, j=y-1; i>=startX; i--, j--)
{
if (chess[i][j] == ch)
{
return true;
}
if (chess[i][j] != '.') //如果有障碍物
{
break;
}
}
//判断右上角
xx = x-1;