4it101»Adv Ukoly

Adv Ukoly

Ú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