Csklassami
@Csklassami

Почему функция работает не так, как надо?

Не могу понять, почему функция работает именно так как надо!
Вот листинг функции:
void check_coordinates()
// проверяем, не вышла ли змейка за поле, если да, то возвращаем ее обратно
{
    if (coordinates_x[1] > N) coordinates_x[1] = 1;
    if (coordinates_x[1] < 1) coordinates_x[1] = N;
    if (coordinates_y[1] > M) coordinates_y[1] = 1;
    if (coordinates_y[1] < 1) coordinates_y[1] = M;

Как я думал - она должна возвращать coordinates_x[1] на 1 (голову змейки на начальное положение), то есть в самое начало поля. Но она работает именно так, как нужно и просто продолжает движение змейки с противоположного конца.
Пример работы:
1) 3a312d3c57b44ff0b052d158de6720a8.JPG
2) 9466be8651a1480b9ff9a8b812208225.JPG

Логически она работает правильно, но я не могу понять суть листинга, который присваивает голове змейки: coordinates_x[1] и coordinates_y[1] значение 1, но несмотря на это движение продолжается с противоположного конца.
  • Вопрос задан
  • 2561 просмотр
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
суть листинга, который присваивает голове змейки: coordinates_x[1] и coordinates_y[1] значение 1,

он присваивает 1 когда координаты больше N или M соответственно, т.е. при выходе из поля справа (x > N) голова перескакивает налево (x = 1), а при выходе из поля снизу (y > M) голова перескакивает наверх (y = 1).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы