Мир игры как сетка
Голова, тело и яблоко всегда стоят в узле решётки — движение это переход к соседнему узлу, не скольжение.
Змейка живёт не в произвольных координатах
Первый прототип уже двигает голову шагами по 20 пикселей, но легко не заметить, почему
именно так: змейка не может оказаться в точке (137, 52) — только в точках, кратных
RAZMER_SHAGA. Игровое поле — это не холст, где можно нарисовать
линию под любым углом (как Canvas в главе 18), а дискретная сетка: конечный
набор клеток, и каждый объект игры — голова, сегмент тела, яблоко — всегда стоит ровно в
одной из них. Рядом со словом «сетка» дальше в главе встретится и «решётка» — это одно и то
же: узлы решётки и есть клетки сетки.
При RAZMER_SHAGA = 20 легальные координаты по каждой оси —
..., -40, -20, 0, 20, 40, .... Движение на шаг — это переход к
соседнему узлу решётки, а не плавное скольжение на произвольное расстояние.
RAZMER_SHAGA — это не «минимальная единица экрана», а сама единица игрового мира. Это и определяет всё остальное в главе: как размещается еда, как обнаруживается столкновение, как выглядит движение тела.