我有正常工作的代码,可以检查玩家是否赢了(当对角线从右上角到左下角时)。但是,我似乎无法弄清楚如何让它适用于左上角到右下角。
此代码有效:(右上角到左下角)
for(int x = boardSize, y = 0; x > 0; x--, y++){
playerCount = 0;
for(int row = y, col = 0; col < x; row++, col++){
if(gameBoard[col][row] == '_')
playerCount = 0;
if(gameBoard[col][row] == playerSign)
playerCount++;
if(playerCount == winningSize)
return true;
}
}
我如何更改代码以使其适用于其他对角线(左上角到右下角)。提前致谢
答案 0 :(得分:0)
您的代码过于复杂。测试从(0,0)到(size-1,size-1)的对角线,包括:
for (int z = 0; z < size; ++z) {
if (board[z][z] == ' ')
count = 0;
else if (board[z][z] == p) {
++count;
if (count == s)
return true;
}
}
请注意,您不需要嵌套(2维)循环来扫描对角线,这基本上是一维的。
答案 1 :(得分:0)
此代码适用于第二个对角线:
for (int y = 0, x = size-1; y < size; y++, x--){
if (board[y][x] == ' '){
count = 0;
}else if (board[y][x] == p){
count++;
if (count == s)
return true;
}
}