152 lines
3.3 KiB
Plaintext
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/`
|