Не могу понять, почему функция работает именно так как надо!
Вот листинг функции:
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)
2)
Логически она работает правильно, но я не могу понять суть листинга, который присваивает голове змейки:
coordinates_x[1] и
coordinates_y[1] значение
1, но несмотря на это движение продолжается с противоположного конца.