Глава 19 · Архитектура
SnakeApp: отделяем модель от визуализации
app.state — модель игры; app.screen и Turtle-объекты — только то, что видно на экране.
app HAS-A screen — тот же паттерн, что и в главах 16–18
| Группа методов | За что отвечает |
|---|---|
bind_keys | построение обработчиков клавиатуры — один раз, при запуске |
request_direction | клавиша → запрос направления, без движения прямо сейчас |
game_tick | один тик игры → изменения state |
render | state → Turtle (единственное место, которое рисует по-настоящему) |
toggle_pause / restart | управление жизненным циклом игры |
SnakeApp не наследуется от turtle.Screen
Как и
PaintApp(tk.Tk) в главе 18, наследование здесь технически возможно, но не выбрано: self.screen — отдельный атрибут, а не сам объект SnakeApp. Композиция делает границу между «моей логикой» и «внутренностями Turtle» явной.Практика: собираем объектный граф SnakeApp
Модуль turtle открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально