Rozdział 19 · Model gry

Świat gry jako siatka

Głowa, ciało i jabłko zawsze znajdują się w węźle sieci – ruch to przejście do sąsiedniego węzła, a nie poślizgnięcie.

Wąż żyje nie w dowolnych współrzędnych

Pierwszy prototyp już porusza się głową w 20px odstępach, ale łatwo przeoczyć dlaczego Dokładnie: wąż nie może być w punkcie (137, 52) — tylko w punktach będących wielokrotnościami RAZMER_SHAGA. Pole gry — to nie płótno, na którym można narysować linię pod dowolnym kątem (jak Canvas w rozdziale 18), a Dyskretna siatka: skończony zestaw pól, a każdy obiekt gry — głowa, segment ciała, jabłko — zawsze znajduje się dokładnie na jednym z nich. Obok słowa „siatka” dalej w rozdziale pojawi się też „kratka” — to to samo: węzły kratki to komórki siatki.

Legalne stanowiska to węzły siatki w RAZMER_SHAGA krokach, a nie w każdym punkcie na polu.

Przy RAZMER_SHAGA = 20 współrzędne prawne na każdej osi — ..., -40, -20, 0, 20, 40, .... Posunięcie się o jeden krok to przejście do do sąsiedniego węzła kratowego, zamiast gładkiego przesuwania się na dowolnej odległości.

To ten sam pomysł co w rozdziale 18 — ale brak pikseli między komórkami
Canvas również działał w całych pikselach, ale figurę można było przesunąć o 1 piksel. Wąż ma stały krok: RAZMER_SHAGA — to nie „minimalna jednostka ekranu”, lecz sama jednostka świata gry. To definiuje wszystko inne w rozdziale: jak rozmieszczana jest żywność, jak wykrywane jest zderzenie, jak wygląda ruch ciała.
Praktyka: Stanowiska prawne w siatce
Automatic check – funkcja is_on_grid():, czy punkt jest wielokrotnością kroku siatki
Otwórz praktykę →