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()循环,但似乎没有任何工作。请指教,谢谢
答案 0 :(得分:0)
我在这里可以看到的主要问题是你只是单向检查,所以如果最后一个计数器被放到'4'的中间,那么这将不会接受它作为胜利。
我可能会有一个依次遍历每个方向的功能(想想罗盘点),计算每个方向上不间断“线”的长度,并将其存储在临时变量中。完成每个方向的操作后,将相对边的线加在一起,看看它是否加到4。
尽管如此,还有其他一百万种方法可以做到这一点!
答案 1 :(得分:0)
我认为for循环可以解决您的问题。对于位置(x,y),(x,y)+(1,0)* k(k = 0,1,2,...)将与第一行做同样的事情。
实际上,我认为你应该检查4个方向,而不仅仅是x轴。
就像我刚才说的那样,(-1,0)和(1,0)将帮助你检查x轴周围(x,y)的位置。
同样,对于其他方向。