Rozdział 19 · Model gry
Współrzędne komórek i piksele Turtle
Nie jest potrzebne osobne tłumaczenie „komórka → piksel”
Komórka siatki vs pikselowa Turtle
Turtle nie ma osobnego pojęcia „komórki”
(x, y), te same, co w rozdziałach 6–7. Można by wprowadzić
osobny układ współrzędnych komórek — col = x // STEP,
row = y // STEP — i przekształcać jedno w drugie przy każdym
odwołaniu do ekranu.
pixel_to_cell.py
def cell_to_pixel(col, row, step=20):
return col * step, row * step
def pixel_to_cell(x, y, step=20):
return x // step, y // step
Dzielenie całkowite liczb ujemnych — to nie to samo co zaokrąglanie w stronę zera
-10 // 20 w Python równa się -1, nie 0 jest Python zaokrągla dzielenie w dół (do minus nieskończoności) zamiast do zera. Wzór na konwersję pikseli na komórki, zapisany bez uwzględnienia tego, będzie nieprawidłowy dokładnie w połowie pola — tej o ujemnych współrzędnych.Dla tego rozdziału wybrano prostsze rozwiązanie: logiczne położenie węża i jabłka to
Są to współrzędne pikselowe Turtle, już wielokrotności STEP. Oddzielnie
Nie ma w ogóle systemu „klatki (col, row)” (x, y) jednocześnie
Co przechowujemy w modelu i co rozumie turtle.goto().
logicheskaya_poziciya.py
STEP = 20
head = (0, 0) # już pikseli Turtle — i już pozycja komórki
head = (head[0] + STEP, head[1]) # krok w prawo – natychmiast w pikselach
Mniej kodu oznacza mniej miejsca na błędy
Tłumaczenie „cell-pixel ↔”
STEPto tłumaczenie nie dodaje żadnych nowych informacji — tylko ryzyko błędu zaokrąglenia odwrotnego z powyższego przykładu.Praktyka: Komórka i piksele
Automatic Check – funkcja pixel_to_cell(): zaokrąglenie współrzędnych na komórki o liczbach ujemnych