5.3 KiB
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
EventEmitterpre 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
// 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ť:
- JavaScript súbor(y) s implementáciou hry
- HTML súbor na spustenie a testovanie hry (môže byť jednoduchý)
- Komentáre vysvetľujúce, ktorý vzor ste si vybrali a prečo
- 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. 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.