所以我正在编写一个 C 程序,它将与用户玩 TicTacTo。但是,我在检查是否有获胜者的功能方面遇到了问题。它似乎根本不起作用。当连续出现 3 个时,游戏才继续。这是相关代码。
这是我的主要功能:
do {
humanChoice(); // let the user make a play
computerChoice(); // does nothing at the moment
gameStatus = checkWin(); // returns 1 if it finds a winner
} while(gameStatus==0);
humanChoice 在数组中用户选择的位置播放一个“X”。这已经过彻底测试并且可以完美运行。然后是 checkWin() 函数:
int checkWin() {
if (
matrix[0][0] == matrix[0][1] == matrix[0][2] || // 1st row
matrix[1][0] == matrix[1][1] == matrix[1][2] || // 2nd row
matrix[2][0] == matrix[2][1] == matrix[2][2] || // 3rd row
matrix[0][0] == matrix[1][0] == matrix[2][0] || // 1st column
matrix[0][1] == matrix[1][1] == matrix[2][1] || // 2nd column
matrix[0][2] == matrix[1][2] == matrix[2][2] || // 3rd column
matrix[0][0] == matrix[1][1] == matrix[2][2] || // left to right diagonal
matrix[0][2] == matrix[1][1] == matrix[2][0] // right to left diagonal
) {
printf("Win! Game Over!");
return(1);
}
return(0);
}
我正在为我的“矩阵”使用以下二维数组:
char matrix[3][3];
我意识到现在程序无法区分计算机获胜和用户获胜。现在这无关紧要。我只需要它来检查一般的胜利。
有什么注意事项吗?
最佳答案
如果左右操作数相等,则 ==
运算符返回 true
。
a == b
将在它们相等时返回 true
。
b == c
将在它们相等时返回 true
。
a == b == c
但是,当 a == b
的计算结果与 c
相同时,将返回 true。
您将希望使用 (a == b) && (b == c)
来实现您想要实现的目标。
关于c - 工作 TicTacTo CheckWin 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622645/