这是我的五子棋胜负判断 效率一般:
/*
5 4 6
/|/
1 - - 3
/|/
7 2 8
*/
int checkChessWin(Site checkSize)
{
int i, j ;
int flagDirect = 0 ;
for(i = 1;i < 5;i++)
{
// 1
if(checkSize.x+i >= CB_LEN
|| chessMan[checkSize.x+i][checkSize.y] != chessKey+1)
{
flagDirect = flagDirect|1 ;
}
// 2
if(checkSize.y+i >= CB_LEN
|| chessMan[checkSize.x][checkSize.y+i] != chessKey+1)
{
flagDirect = flagDirect|2 ;
}
// 3
if(checkSize.x-i < 0
|| chessMan[checkSize.x-i][checkSize.y] != chessKey+1)
{
flagDirect = flagDirect|4 ;
}
// 4
if(checkSize.y-i < 0
|| chessMan[checkSize.x][checkSize.y-i] != chessKey+1)
{
flagDirect = flagDirect|8 ;
}
// 5
if(checkSize.x-i < 0 && checkSize.y-i < 0
|| chessMan[checkSize.x-i][checkSize.y-i] != chessKey+1)
{
flagDirect = flagDirect|16 ;
}
// 6
if(checkSize.x+i >= CB_LEN && checkSize.y-i < 0
|| chessMan[checkSize.x+i][checkSize.y-i] != chessKey+1)
{
flagDirect = flagDirect|32 ;
}
// 7
if(checkSize.x-i < 0 && checkSize.y+i >= CB_LEN
|| chessMan[checkSize.x-i][checkSize.y+i] != chessKey+1)
{
flagDirect = flagDirect|64 ;
}
// 8
if(checkSize.x+i >= CB_LEN && checkSize.y+i >= CB_LEN
|| chessMan[checkSize.x+i][checkSize.y+i] != chessKey+1)
{
flagDirect = flagDirect|128 ;
}
}
return flagDirect;
}