很抱歉,这是一个简单的解决方法,但我似乎在这里找不到错误。我正在用C进行井字游戏。程序中的所有内容似乎都能正常运行,除了数组左上角的位置([0] [0]或1,1,其中row-1和col- 1)。人类玩家和计算机玩家都可以在该地点输入他们的令牌,但是下次玩家移动时它将删除令牌。我的代码如下:
我遇到的问题是这样的:
The current state of the game is:
_ _ _
_ _ _
_ _ _
Player 1 enter your selection [row, col]: 2,1
The current state of the game is:
_ _ _
O _ _
_ _ _
Player 2 has entered [row, col]: 3,1
The current state of the game is:
_ _ _
O _ _
X _ _
Player 1 enter your selection [row, col]: 1,1
The current state of the game is:
O _ _
O _ _
X _ _
Player 2 has entered [row, col]: 3,3
The current state of the game is:
_ _ _
O _ _
X _ X
这里到底是什么问题?感谢您的协助。
答案 0 :(得分:0)
问题在于以下功能。您的if语句只有一个=
符号。这导致位置0, 0
设置为'_'
并返回false。
_Bool check_table_full(char board[SIZE][SIZE])
{
int a, b;
for (a=0; a<SIZE; a++) {
for (b=0; b<SIZE; b++) {
if (board[a][b]=='_') { // <==== Fixed the double equal sign
return false;
}
else {
return true;
}
}
}
}
我当然会建议您随时清理格式。另外,您在上面提到您正在使用GCC。对于像这样的简单学习程序,您可能应该使用-Wall
进行编译,以显示所有警告。该代码也会标记其他一些问题。