Úkoly
Pojem úkol je poměrně široký a nejasný, pokusím se nejdříve popsat různé typy úkolů, které se objevují v adventurách:
- postava něco chce a poté, co to dostane předá jinou věc hráči - v podstatě klasická pohádka o kohoutkovi a slepičce. Slepička má přinést kohoutkovi vodu, když dojde ke studánce, dostane nový úkol - donést šátek od švadleny, atd. Řešení těchto "úkolů" je popsáno u postav, když postava něco dostane, dá něco jiného hráči. Vhodným rozmístěním požadavků a věcí lze vytvořit příběh.
- úkol jako příznak, že hráč něco udělal 1 - např. než hráč hráč vejde do tajné chodby, musí nejdříve promluvit s čarodějem, tj. splnit úkol mluvit s čarodějem. V většině případů se to nemusí dělat přes úkoly, ale po splnění podmínky (promluví s čarodějem, zabije draka, dá chleba trpaslíkovi, podívá se z okna, ...) se odemkne místnost, vytvoří průchod či vloží věc do místnosti.
- úkol jako příznak, že hráč něco udělal 2 - mohou existovat situace, kdy je opravdu potřeba příznak o tom, že něco proběhlo. Doporučuji tento příznak umístit do třídy HerniPlan. Pokud je jeden či dva, tak je asi nejjednodušší v herním plánu vytvořit proměnné typu boolean a odpovídající metody pro přístup k těmto metodám. Pokud je úkolů více, asi by bylo vhodnější použít pro ně výčtový typ či ještě lépe samostatnou třídu Ukol (minimálně datové atributy název a zda splněn). V herním plánu poté bude jejich seznam. Parametrem metod přistupujících k příznakům bude jméno příznaku.
- ve hře je postava (více postav), která dává postupně úkoly, popř. dává postupně rady.
Příklad
Do základní adventury doplníme úkoly postupně projít místnosti učebna, bufet a kancelář. Tj. první úkol je dojít do učebny, druhý do bufetu a třetí do kanceláře. Dále doplníme dvě postavy: (pravdomluvného) vrátného a (škodolibou) uklízečku. Obě postavy budou ve vstupní hale - vrátný bude dávat správné rady, uklízečka se nás bude pokoušet zmást.
Řešení se bude skládat z těchto částí:
- a. vytvořit třídu Postava
-
- b. vytvořit třídu Ukol
-
- c. rozšířit Mistnost o seznam postav
-
- d. rozšířit HerniPlan o seznam úkolů
-
- e. inicializovat postavy a úkoly
-
- f. upravit třídu PrikazJdi
- po dojití do místnosti se splní úkol
- g. vytvořit příkaz mluv
-