Rozdział 19 · Architektura
Czysta logika gry bez Turtle
Zasady gry to zwykłe funkcje liczb i list; Turtle wystarczy je pokazać.
Żadna z funkcji reguł nie otwiera okna
Przyjrzyjmy się wszystkim omówionym funkcjom od sekcji 19.9: next_head(),
move_snake(), is_wall_collision(),
is_self_collision(), choose_food(),
calculate_delay(). Żaden z nich nie tworzy
turtle.Turtle(), nie czyta golova.xcor()
w ogóle nie wie nic o ekranie:
Zasady gry – Wspólne funkcje liczb i list
next_head(head, direction)
krotka → krotka
sekcja 19.11
move_snake(snake, head, grow)
lista → lista
Rozdział 19.18
is_wall_collision(head)
motorcade → bool
Rozdział 19.19
is_self_collision(head, body)
konwoj lista → bool
Rozdział 19.20
choose_food(snake, rng)
lista → kondukt
Rozdział 19.18
calculate_delay(score)
int → int
Rozdział 19.14
To nie jest przypadek, lecz świadome rozdzielenie: zasady „Węża” program. Rozdział 19.30 wykorzystuje dokładnie tę właściwość, aby testować reguły bezpośrednio, bez żadnej Prawdziwe okno.
Ta sama zasada co w rozdziale 18
normalize_bounds() oraz Shape w PaintApp (rozdział 18) były dokładnie takie same — czyste funkcje i dane bez tkinter wewnątrz. Są z tego dwa korzyści: logikę łatwiej testować i łatwiej ją zrozumieć — czytając funkcję nie trzeba trzymać w głowie stanu całego okna.Praktyka: Które funkcje są czystą logiką
Automatyczna walidacja – funkcja is_pure_logic(): rozróżnianie reguł bez Turtle od kodu wymagającego ekranu