#c
#c
Вопрос:
if ((board[y][x] == 'o' amp;amp; board[y][x 1] == 'o' amp;amp; board[y][x 2] == 'o' amp;amp; board[y][x 3] == 'o')
|| (board[y][x] == 'o' amp;amp; board[y][x - 1] == 'o' amp;amp; board[y][x - 2] == 'o' amp;amp; board[y][x - 3] == 'o') )
{
printf("you win!n");
}
это то, что я пытался сделать с помощью char *board[10][10]
в любом случае простой способ решить эту проблему? Я пробовал много других методов, таких как цикл for() и цикл doWhile(), но, похоже, ничего не работает. пожалуйста, совет, спасибо
Комментарии:
1. Отображается какая — либо ошибка? (Что вы подразумеваете под тем, что, похоже, ничего не работает) Не могли бы вы привести весь код? (
x
иy
= ?) То, что у вас здесь есть, довольно просто и может быть правильным, однако может потребоваться несколько дополнительных проверок.
Ответ №1:
Основная проблема, которую я вижу здесь, заключается в том, что вы проверяете только в одном направлении, поэтому, если последний счетчик опускается в середину «4», это не будет считаться победой.
У меня, вероятно, была бы функция, которая поочередно просматривает каждое направление (например, точки компаса), подсчитывает длину непрерывной «линии» в каждом направлении и сохраняет ее во временной переменной. После того, как это будет сделано для каждого направления, сложите линии в противоположных сторонах и посмотрите, прибавится ли это к 4.
Хотя, вероятно, есть миллион других способов сделать это!
Ответ №2:
Я думаю, что for-loop подходит для вашей проблемы. Для позиции (x, y), (x, y) (1,0) * k(k = 0,1,2, …) будет делать то же самое, что и ваша первая строка.
На самом деле, я думаю, вам следует проверять 4 направления, а не только ось x.
Как я только что сказал, (-1,0) и (1,0) помогут вам проверить положения вокруг (x, y) по оси x.
Аналогично, для других направлений.