Rozdział 19 · Architektura
SnakeApp: oddzielenie modelu od wizualizacji
app.state jest model gry; app.screen i Turtle-obiekty to tylko to, co jest widoczne na ekranie.
app HAS-A screen jest taki sam jak w rozdziałach 16–18
| Grupa metod | Za co odpowiada |
|---|---|
bind_keys | budować obsługi klawiatury — raz, przy starcie |
request_direction | klucz → poproś o kierunek, teraz brak ruchu |
game_tick | jeden odznak → zmianie state |
render | state → Turtle (jedyne miejsce, które naprawdę rysuje) |
toggle_pause / restart | Zarządzanie cyklem życia gry |
SnakeApp nie dziedziczy po turtle.Screen
Na przykład
PaintApp(tk.Tk) w rozdziale 18 dziedziczenie tutaj technicznie jest możliwe, ale nie wybierane: self.screen jest atrybutem indywidualnym, a nie samym obiektem SnakeApp. Kompozycja sprawia, że granica między „moją logiką” a „wnętrzem Turtle” jest oczywista.Praktyka: Złóż graf obiektowy SnakeApp
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie