|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "c8fc39a014d08247c082878122e2ba73",
|
|
|
"translation_date": "2025-10-24T21:49:14+00:00",
|
|
|
"source_file": "6-space-game/1-introduction/assignment.md",
|
|
|
"language_code": "sk"
|
|
|
}
|
|
|
-->
|
|
|
# Vytvorenie hry: Použitie návrhových vzorov
|
|
|
|
|
|
## Prehľad zadania
|
|
|
|
|
|
Využite svoje nové znalosti návrhových vzorov na vytvorenie jednoduchého prototypu hry! Toto zadanie vám pomôže precvičiť si architektonické vzory (dedičnosť alebo kompozíciu) a systém komunikácie pub/sub, o ktorom ste sa učili v lekcii.
|
|
|
|
|
|
## Pokyny
|
|
|
|
|
|
Vytvorte jednoduchú reprezentáciu hry, ktorá demonštruje návrhové vzory z tejto lekcie. Vaša hra by mala byť funkčná, ale nemusí obsahovať zložité grafické prvky – zamerajte sa na základnú architektúru a komunikačné vzory.
|
|
|
|
|
|
### Požiadavky
|
|
|
|
|
|
**Vyberte si architektonický vzor:**
|
|
|
- **Možnosť A**: Použite dedičnosť založenú na triedach (ako príklad `GameObject` → `Movable` → `Hero`)
|
|
|
- **Možnosť B**: Použite kompozíciu (ako prístup s továrenskou funkciou a zmiešanými správaním)
|
|
|
|
|
|
**Implementujte komunikáciu:**
|
|
|
- **Zahrňte** triedu `EventEmitter` pre messaging pub/sub
|
|
|
- **Nastavte** aspoň 2-3 rôzne typy správ (napr. `PLAYER_MOVE`, `ENEMY_SPAWN`, `SCORE_UPDATE`)
|
|
|
- **Prepojte** vstup používateľa (klávesnica/myš) s hernými udalosťami prostredníctvom systému udalostí
|
|
|
|
|
|
**Herné prvky, ktoré treba zahrnúť:**
|
|
|
- Aspoň jednu postavu ovládanú hráčom
|
|
|
- Aspoň jeden ďalší herný objekt (nepriateľ, predmet na zbieranie alebo environmentálny prvok)
|
|
|
- Základnú interakciu medzi objektmi (kolízia, zbieranie alebo komunikácia)
|
|
|
|
|
|
### Návrhy na hry
|
|
|
|
|
|
**Jednoduché hry na zváženie:**
|
|
|
- **Hra Snake** – Segmenty hada nasledujú hlavu, jedlo sa objavuje náhodne
|
|
|
- **Variácia Pong** – Pálka reaguje na vstup, lopta sa odráža od stien
|
|
|
- **Hra na zber** – Hráč sa pohybuje a zbiera predmety, pričom sa vyhýba prekážkam
|
|
|
- **Základy Tower Defense** – Veže detekujú a strieľajú na pohybujúcich sa nepriateľov
|
|
|
|
|
|
### Usmernenia pre štruktúru kódu
|
|
|
|
|
|
```javascript
|
|
|
// Example starting structure
|
|
|
const Messages = {
|
|
|
// Define your game messages here
|
|
|
};
|
|
|
|
|
|
class EventEmitter {
|
|
|
// Your event system implementation
|
|
|
}
|
|
|
|
|
|
// Choose either class-based OR composition approach
|
|
|
// Class-based example:
|
|
|
class GameObject { /* base properties */ }
|
|
|
class Player extends GameObject { /* player-specific behavior */ }
|
|
|
|
|
|
// OR Composition example:
|
|
|
const gameObject = { /* base properties */ };
|
|
|
const movable = { /* movement behavior */ };
|
|
|
function createPlayer() { /* combine behaviors */ }
|
|
|
```
|
|
|
|
|
|
### Testovanie implementácie
|
|
|
|
|
|
**Overte, že váš kód funguje:**
|
|
|
- **Testovaním**, že objekty sa pohybujú alebo menia, keď sú spustené udalosti
|
|
|
- **Potvrdením**, že viaceré objekty môžu reagovať na tú istú udalosť
|
|
|
- **Kontrolou**, že môžete pridať nové správania bez úpravy existujúceho kódu
|
|
|
- **Zabezpečením**, že vstup z klávesnice/myši správne spúšťa herné udalosti
|
|
|
|
|
|
## Pokyny na odovzdanie
|
|
|
|
|
|
**Vaše odovzdanie by malo obsahovať:**
|
|
|
1. **JavaScript súbor(y)** s implementáciou hry
|
|
|
2. **HTML súbor** na spustenie a testovanie hry (môže byť jednoduchý)
|
|
|
3. **Komentáre** vysvetľujúce, ktorý vzor ste si vybrali a prečo
|
|
|
4. **Stručnú dokumentáciu** vašich typov správ a ich funkcie
|
|
|
|
|
|
## Hodnotiace kritériá
|
|
|
|
|
|
| Kritérium | Vynikajúce (3 body) | Dostatočné (2 body) | Potrebuje zlepšenie (1 bod) |
|
|
|
|-----------|---------------------|---------------------|-----------------------------|
|
|
|
| **Architektonický vzor** | Správne implementuje buď dedičnosť ALEBO kompozíciu s jasnou hierarchiou tried/objektov | Používa zvolený vzor s menšími chybami alebo nekonzistenciami | Pokúša sa použiť vzor, ale implementácia má významné problémy |
|
|
|
| **Implementácia pub/sub** | EventEmitter funguje správne s viacerými typmi správ a správnym tokom udalostí | Základný systém pub/sub funguje s určitým spracovaním udalostí | Systém udalostí je prítomný, ale nefunguje spoľahlivo |
|
|
|
| **Funkčnosť hry** | Tri alebo viac interaktívnych prvkov, ktoré komunikujú prostredníctvom udalostí | Dva interaktívne prvky so základnou komunikáciou udalostí | Jeden prvok reaguje na udalosti alebo základnú interakciu |
|
|
|
| **Kvalita kódu** | Čistý, dobre komentovaný kód s logickou organizáciou a moderným JavaScriptom | Všeobecne dobre organizovaný kód s dostatočnými komentármi | Kód funguje, ale chýba mu organizácia alebo jasné komentovanie |
|
|
|
|
|
|
**Bonusové body:**
|
|
|
- **Kreatívne herné mechaniky**, ktoré ukazujú zaujímavé použitie vzorov
|
|
|
- **Viacero metód vstupu** (klávesnica A myš)
|
|
|
- **Škálovateľná architektúra**, ktorá by sa dala ľahko rozšíriť o nové funkcie
|
|
|
|
|
|
---
|
|
|
|
|
|
**Zrieknutie sa zodpovednosti**:
|
|
|
Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. |