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
Otwórz praktykę →