【发布时间】:2017-03-11 17:46:07
【问题描述】:
我做了一个井字游戏,我想检查'x'或'o'是否出现在整列或整行中,游戏板是3X3矩阵。
我写了一个实现它的代码(列部分),但问题是循环只计算第一列。
输出:
计算第一列,x 赢了。
注意:它是为 x 指定的。在输出中,o 在游戏的其余部分中处于索引 2,2 以用于测试目的。
这是我的代码:
int win(char board[][COL])
{
int flag = 0;
int x = 0, o = 0;
int i = 0, j = 0;
for (i = 0; i < COL; i++) // this loop checks who won by fillin a column
{
if (board[i][j] == 'x')
{
x++;
}
if (x == COL)
{
flag = 1;
printf("x won!\n");
}
}
return flag;
}
【问题讨论】:
-
为什么
j总是0? -
我不明白你的全部方法。为什么要在循环内将
x与COL进行比较?该功能应该做什么?对于 TTT,您必须检查行、列和对角线。这里只检查第一行,但不能设置标志。使用您的调试器查看代码中实际发生的情况,这将是一次很好的培训! -
@olaf COL 的值为 3,该 if 语句用于检查 x 是否在列中 3 次(COL 次)。我(部分地并且可能谨慎地)表示它应该涵盖列部分......对于给您带来的不便,我深表歉意,感谢您的关注。
-
抱歉,我混淆了列和行。但是条件不能在循环内为真!您应该重新阅读 C 书籍中关于
for循环的章节。
标签: c arrays multidimensional-array tic-tac-toe