pvjc26/a3/checkcheck.txt
2026-05-08 14:16:31 +02:00

152 lines
3.3 KiB
Plaintext

# 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/`