You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/cs/6-space-game/1-introduction/assignment.md

5.3 KiB

Vytvořte hru: Použití návrhových vzorů

Přehled úkolu

Využijte své nové znalosti návrhových vzorů k vytvoření jednoduchého prototypu hry! Tento úkol vám pomůže procvičit jak architektonické vzory (dědičnost nebo kompozici), tak systém komunikace pub/sub, o kterém jste se dozvěděli v lekci.

Pokyny

Vytvořte jednoduchou reprezentaci hry, která demonstruje návrhové vzory z této lekce. Vaše hra by měla být funkční, ale nemusí obsahovat složitou grafiku zaměřte se na základní architekturu a komunikační vzory.

Požadavky

Vyberte si architektonický vzor:

  • Možnost A: Použijte dědičnost založenou na třídách (například GameObjectMovableHero)
  • Možnost B: Použijte kompozici (například přístup s tovární funkcí a smíšenými chováními)

Implementujte komunikaci:

  • Zahrňte třídu EventEmitter pro zasílání zpráv pomocí pub/sub systému
  • Nastavte alespoň 2-3 různé typy zpráv (například PLAYER_MOVE, ENEMY_SPAWN, SCORE_UPDATE)
  • Propojte uživatelský vstup (klávesnice/myš) s herními událostmi prostřednictvím systému událostí

Herní prvky, které je třeba zahrnout:

  • Alespoň jednu postavu ovládanou hráčem
  • Alespoň jeden další herní objekt (nepřítel, sběratelský předmět nebo prvek prostředí)
  • Základní interakci mezi objekty (kolize, sběr nebo komunikace)

Návrhy na hry

Jednoduché hry, které můžete zvážit:

  • Hra Snake Segmenty hada následují hlavu, jídlo se objevuje náhodně
  • Variace Pongu Pálka reaguje na vstup, míček se odráží od stěn
  • Sběratelská hra Hráč se pohybuje a sbírá předměty, zatímco se vyhýbá překážkám
  • Základy Tower Defense Věže detekují a střílí na pohybující se nepřátele

Pokyny ke struktuře 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 */ }

Testování vaší implementace

Ověřte, že váš kód funguje:

  • Testováním, zda se objekty pohybují nebo mění při spuštění událostí
  • Potvrzením, že více objektů může reagovat na stejnou událost
  • Kontrolou, že můžete přidávat nové chování bez úprav stávajícího kódu
  • Zajištěním, že vstup z klávesnice/myši správně spouští herní události

Pokyny k odevzdání

Vaše odevzdání by mělo zahrnovat:

  1. JavaScript soubor(y) s vaší implementací hry
  2. HTML soubor pro spuštění a testování vaší hry (může být jednoduchý)
  3. Komentáře, které vysvětlují, jaký vzor jste si vybrali a proč
  4. Stručnou dokumentaci vašich typů zpráv a jejich funkcí

Hodnotící kritéria

Kritérium Vynikající (3 body) Dostatečné (2 body) Potřebuje zlepšení (1 bod)
Architektonický vzor Správně implementuje buď dědičnost NEBO kompozici s jasnou hierarchií tříd/objektů Používá zvolený vzor s drobnými problémy nebo nekonzistencemi Pokouší se použít vzor, ale implementace má významné problémy
Implementace pub/sub EventEmitter funguje správně s více typy zpráv a správným tokem událostí Základní systém pub/sub funguje s některým zpracováním událostí Systém událostí je přítomen, ale nefunguje spolehlivě
Funkčnost hry Tři nebo více interaktivních prvků, které komunikují prostřednictvím událostí Dva interaktivní prvky se základní komunikací událostí Jeden prvek reaguje na události nebo základní interakci
Kvalita kódu Čistý, dobře komentovaný kód s logickou organizací a moderním JavaScriptem Obecně dobře organizovaný kód s dostatečnými komentáři Kód funguje, ale postrádá organizaci nebo jasné komentáře

Bonusové body:

  • Kreativní herní mechaniky, které ukazují zajímavé využití vzorů
  • Více vstupních metod (události z klávesnice I myši)
  • Škálovatelná architektura, kterou by bylo snadné rozšířit o nové funkce

Prohlášení:
Tento dokument byl přeložen pomocí služby AI pro překlady Co-op Translator. Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho rodném jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.