Глава 19 · Правила игры

Столкновение со стеной

GRANICA — предел координаты центра головы, а не размер окна; граница включена в легальную область.

Граница — координата центра сегмента, а не края экрана

GRANICA = 280 — это не размер окна (600×600), а предел для координаты центра головы. При толщине сегмента в 20 пикселей голова с центром ровно в 280 всё ещё целиком помещается на видимом поле; на 300 она бы уже выходила за край.

is_wall_collision.py
def is_wall_collision(head, *, half=280):
    x, y = head
    return abs(x) > half or abs(y) > half
Позиция головыis_wall_collision()
(280, 0)False — легальная граница
(-280, -280)False — легальная граница, угол поля
(300, 0)True — уже за пределами
Строгое сравнение (>), не (>=) — граница включена
Если бы проверка использовала >=, легальная позиция 280 уже считалась бы столкновением — змейка не смогла бы доехать до самого края поля. Раздел 19.30 разбирает эти пограничные случаи как отдельные тесты, а не только на словах.
Практика: граница поля
Автоматическая проверка — функция is_wall_collision() на самой границе и за ней
Открыть практику →