Не могу понять, почему функция работает именно так как надо!
Вот листинг функции:
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](//habrastorage.org/files/3a3/12d/3c5/3a312d3c57b44ff0b052d158de6720a8.JPG)
2)
![9466be8651a1480b9ff9a8b812208225.JPG](//habrastorage.org/files/946/6be/865/9466be8651a1480b9ff9a8b812208225.JPG)
Логически она работает правильно, но я не могу понять суть листинга, который присваивает голове змейки:
coordinates_x[1] и
coordinates_y[1] значение
1, но несмотря на это движение продолжается с противоположного конца.