Had
-
vykreslit mřížku s políčky o rozměrech 32x32
- nekreslit první dvě a poslední dvě políčka
- do struktury
Game
přidat rozměry vnitřní mřížky - přesunout vykreslování do vlastní funkce
-
reprezentace a inicializace hada pomocí struktury
Snake
typedef struct { SDL_Point *parts; // pole souradnic clanku hada int tail; // index souradnice ocasu v poli parts int head; // index souradnice hlavy v poli parts } Snake;
-
pamatujeme si souřadnice (
SDL_Point
) všech aktivních článků hada v mřížce- had může maximálně zabírat celou mřížku - alokace pole o velikosti ROWS x COLS
- pamatujeme si index ocasu a index hlavy, které pak budeme posunovat pro pohyb
-
vytvoříme hada o dvou článcích uprostřed mřížky
- uložíme souřadnici článku a inkrementujeme indexy hlavy
- a ještě jednou pro ten druhý článek
-
-
vykreslení hada
- projdeme všechny články od ocasu k hlavě a vykreslíme jako čtverce v mřížce
- nastavíme si
i = tail
- cyklus dokud
i
není index hlavy- vykreslíme čtverec se souřadnici
i
v mřížce - posuneme se na další článek
- pokud jsme na konci pole, tak pokračujeme od začátku pole
parts
(modulo...)
- pokud jsme na konci pole, tak pokračujeme od začátku pole
- vykreslíme čtverec se souřadnici
-
pohybování hada
- pokud uběhlo 200 ms, tak pohnout hada o políčko
- inkrementace indexu ocasu (opět s modulem)
- výpočet nové hlavy jako
old_head + direction
- uložení nové hlavy do pole parts na index hlavy
- inkrementace indexu hlavy (opět s modulem)
-
pohyb pomocí šípek
-
generování jablek
- vygenerovat náhodnou souřadnici jablka a vykreslovat jako čtverec
- pokud se hlava dostane na pozici jablka, tak neposunovat index ocasu (dojde k zvětšeni hada)
-
při nárazu do stěny či do sebe vypsat konec hry se skórem
-
vykreslení hada pomoci textur včetně záhybů
Textura obsahuje v mřížce políčka o velikosti 64x64. Jednotlivá políčka lze vybrat pomocí třetího parametru
srcrect
vSDL_RenderCopy
. Záhyb lze vybrat podle pozice předchozího a následujícího článku.