Глава 19 · Модель игры

Голова, тело и модель Snake

Список координат вместо списка Turtle-объектов — snake[0] это голова, остальное — тело.

Змейка как список позиций, а не список черепашек

Первый прототип хранит тело как список объектов Turtle — состояние игры и графика неразрывно связаны, ту же проблему глава 18 уже разбирала для Canvas (раздел 18.8). Финальная модель хранит змейку как обычный список координат:

model_snake.py
snake = [
    (0, 0),      # snake[0] — голова
    (-20, 0),
    (-40, 0),
]
GameState (фрагмент)snake: list[Position]direction: Direction
snake[0] — голова; snake[1:] — тело. Ни одного объекта Turtle внутри.
Отрисовка превращает позиции в Turtle-сегменты — не наоборот
Модель ничего не знает о том, как выглядит змейка на экране. render() (раздел 19.29) читает snake и раскладывает координаты по уже существующим Turtle-сегментам — то же разделение «модель ≠ виджеты», что и render_document() в PaintApp главы 18.
Практика: список позиций как модель Snake
Автоматическая проверка — функции head_of() и body_of(): snake[0] это голова, snake[1:] — тело
Открыть практику →