if ((board[y][x] == 'o' && board[y][x + 1] == 'o' && board[y][x + 2] == 'o' && board[y][x + 3] == 'o')
||  (board[y][x] == 'o' && board[y][x - 1] == 'o' && board[y][x - 2] == 'o' && board[y][x - 3] == 'o') )
    {
     printf("you win!\n");
    }


这就是我尝试使用char * board [10] [10]做的事情
反正解决这个简单的方法?我尝试了许多其他方法,例如for()循环和doWhile()循环,但似乎没有任何效果。请指教,谢谢

最佳答案

我在这里可以看到的主要问题是,您只检查一个方向,因此,如果最后一个计数器落在“ 4”的中间,则不会接受它作为赢局。

我可能会有一个函数,该函数依次遍历每个方向(请考虑罗盘点),计算每个方向上连续的“线”的长度,并将其存储在一个临时变量中。在完成每个方向的操作后,将两边的线加在一起,然后看是否加到4。

不过,可能还有一百万种其他方式可以做到这一点!

10-01 15:24
查看更多