# ODOVZDANIE PROJEKTU: SNAKE GAME ## Umiestnenie projektu ``` /home/kubo/pvjc26/a3/ ``` ## Spustenie hry ```bash cd /home/kubo/pvjc26/a3/ ./program ``` --- ## Čo bolo implementované ### ✓ Herné požiadavky (podľa zadania) 1. **Svet (hracie pole)** - Viditeľná oblasť obrazovky s hranicami - Dynamické rozmery podľa veľkosti terminálu 2. **Odmeny** - 20 odmien (`*`) náhodne rozhádzaných po svete - Zjedené odmeny označené súradnicami [-1, -1] - Detekcia kedy sú všetky zjedené → víťazstvo 3. **Had** - Telo z `x` znakov - Počiatok: 5 segmentov v strede obrazovky - Reprezentácia: Spojový zoznam (linked list) - Rast pri zjedení odmeny 4. **Pohyb hada** - Vektor rýchlosti [sx, sy] - Zmena podľa šípiek: - ↑ = [0, -1] - ↓ = [0, 1] - ← = [-1, 0] - → = [1, 0] - Bezpečnosť: Zákaz otočenia na 180° 5. **Logika hry - konečné stavy** - Zrážka so stenou → END_WALL - Zrážka so sebou samým → END_SNAKE - Všetky odmeny zjedené → END_FOOD (víťazstvo) - Pokračovanie → END_CONTINUE ### ✓ Technické implementácie - Ncurses knižnica na grafiku v terminálu - Herný loop s reálnym časom - Detekcia vstupov v reálnom čase - Spracovanie signálov bezpečne - Čistá pamäť bez curiek --- ## Súbory projektu ### Jadrové súbory hry - `snake.h` - Datové štruktúry, API - `snake.c` - Logika hada (103 riadkov) - `add_snake()` - Pridanie segmentu - `remove_snake()` - Odstránenie chvosta - `is_snake()` - Detekcia kolízie - `step_state()` - Hlavná logika hry ⭐ ### GUI a program - `game.h` - Rozhranie hry (36 riadkov) - `game.c` - GUI s ncurses (219 riadkov) - `init_game()` - Inicializácia - `render_game()` - Vykreslenie - `handle_input()` - Vstup - `run_game()` - Herný loop ⭐ - `program.c` - Hlavný program (16 riadkov) ### Dokumentácia a testovanie - `README.md` - Dokumentácia projektu - `PREZENTACIA.md` - Detailná prezentácia - `test_snake.c` - Unit testy - `validate.sh` - Validačný skript - `program` - Skompilovaný spustiteľný súbor (22 KB) --- ## Kompilácia ```bash gcc -o program program.c game.c snake.c -lncurses -Wall ``` **Závislosť:** `libncurses-dev` (už nainštalovaná) --- ## Ovládanie hry | Klávesa | Akcia | |---------|-------| | ↑↓←→ | Pohyb hada | | q | Ukončenie hry | --- ## Testy Všetky testy úspešne prešli: ```bash ./test_logic ``` Výsledky: - ✓ Adding snake parts - ✓ Checking if coordinates are part of snake - ✓ Counting snake parts - ✓ Removing snake tail - ✓ Testing game state - ✓ Testing wall collision --- ## Validácia projektu ```bash ./validate.sh ``` Všetky kontroly prešli: - ✓ 6/6 súborov - ✓ FOOD_COUNT = 20 - ✓ Bez chýb kompilácie - ✓ Spustiteľný súbor - ✓ Všetky testy prešli - ✓ Všetky funkcie implementované - ✓ Všetky datové štruktúry prítomné --- ## Poznámky pre cvičiaceho 1. **Spustenie:** `./program` 2. **Koniec:** Stlačiť 'q' alebo hra skončí pri zrážke/víťazstve 3. **Zdrojový kód:** Všetky súbory .c a .h v adresári 4. **Testovanie:** `./test_logic` pre overenie logiky Projekt je **úplný** a **testovaný**. Pripravený na prezentáciu! 🎮 --- **Vytvorené:** 8. máj 2026 **Umiestnenie:** `/home/kubo/pvjc26/a3/snake/`