c - 工作 TicTacTo CheckWin 功能?

标签 c comparison logic conditional-statements tic-tac-toe

所以我正在编写一个 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 将在它们相等时返回 trueb == c 将在它们相等时返回 true

a == b == c 但是,当 a == b 的计算结果与 c 相同时,将返回 true。

您将希望使用 (a == b) && (b == c) 来实现您想要实现的目标。

关于c - 工作 TicTacTo CheckWin 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622645/

相关文章:

c - POSIX sigevent 未使用 c11 进行编译

c - 如何在 C include 语句中使用#define?

python - 比较 Python 中的两个列表

java - 如何决定方法应该进入数据定义类 (DDC) 还是实现类

c - 该程序的适当逻辑

c - 正在运行的可执行文件突然断电变成空文件

c - 如何使用 matlab 生成的代码

c# - 重载相等运算符 == 如何真正起作用?

c - 我如何比较收到的答案?

javascript - 如何在随机存储到另一个数组后找到与哪个数组相关的值(例如 :array a, 数组 b)