Programování pro hračičky/Krok 1

Z Wikiverzity
Skočit na navigaci Skočit na vyhledávání
Jak používat klasifikační nálepkuTato stránka je součástí kurzu:
středoškolská
Příslušnost: skupinová

O co nám půjde[editovat]

Cílem tohoto kurzu je dojít od prvního seznámení se světem programování ke schopnosti analyzovat úlohu, navrhnout datové struktury a algoritmus k jejímu řešení, a pak ji též naprogramovat v nějakém programovacím jazyce a vývojovém prostředí, přičemž za tento jazyk budeme brát v rámci tohoto kurzu LPC a za vývojové prostředí MUD Prahy. Během kurzu bychom se však měli vzdělat natolik, abychom dokázali využít své znalosti analýzy a algoritmizace úloh pro programování v libovolném dalším programovacím jazyce, kterému se (někde mimo tento kurz) naučíme.

Jak vůbec začít[editovat]

Objekty a jejich vlastnosti[editovat]

Poté, co jsme si vyzkoušeli zadávání základních příkazů a přečetli základní kapitoly nápovědy, můžeme se porozhlédnout po oné oblasti hry, v níž jsme se ocitli. Říká se jí Dům. Konkrétně jde o virtuální obraz Modrého domu v Praze na Letné, v němž kdysi Prahy vznikly jako ponejprv stolní hra, a ve hře má tato oblast důležitou cvičnou úlohu — začátečník se zde může naučit zacházet se hrou, aniž by mu zatím hrozilo větší nebezpečí (viz též herní nápovědu pomoc dům).

První činností, kterou musí nováček zvládnout, aby si dokázal ve hře poradit, je prozkoumávání různých objektů, s nimiž se ve hře bude setkávat (a které se v rámci tohoto kurzu chceme naučit též programovat). Mezi tyto objekty patří jednak místnosti, jimiž hráč prochází, jednak rozličné předměty, které se v těchto místnostech nacházejí, jednak různé bytosti, s nimiž se hráč v těchto místnostech setkává.[1]

Všechny tyto objekty si můžeme především prohlédnout. Místnosti si prohlížíme příkazem rozhlédni se (nebo zkratkou r),[2] případně automaticky tím, že do nějaké místnosti přijdeme.[3] Přitom zpravidla vidíme hned i seznam dalších objektů (předmětů i bytostí), které se v místnosti nacházejí a které si pak můžeme jednotlivě prohlédnout příkazem prohlédni si (či zkratkou p). V počáteční místnosti hry si tak můžeme vyzkoušet třeba p stůl či p josefa.[4]

Objekty můžeme dále ohmatat příkazem hmatej nebo ohmatej[5], očichat příkazem čichej nebo očichej, poslechnout si příkazem poslouchej.

Všemi těmito příkazy zjišťujeme různé vlastnosti objektů. Těch mají objekty mnohem více, než jen vzhled, povrch, zápach a zvuk, ovšem většina jich není zjistitelná přímo, ale jen různým zacházením s objekty — tak například zjistíme cenu předmětu tím, že jej zkusíme prodat na tržišti, sílu zbraně tím, že s ní začneme bojovat, nebo jedovatost neznámého oříšku tím, že jej sníme.

Objekt hráče[editovat]

Objektem je i samotný hráč. I on se dá prohlédnout, ohmatat, očichat či poslechnout, i on má spoustu dalších zprvu nepozorovatelných vlastností. Některé z nich jsou viditelné v herním nastavení, které jsme zmínili výše (příkaz nastavení), některé další si zas můžeme prohlédnout příkazem stav. Na začátku hry po zadání tohoto příkazu spatříme přibližně tohle:

Jsi Pokus Nový.
Zdolal jsi 0 % dlouhé cesty.
Máš 48 životních bodů (z max. 48), 36 duševních bodů (z max. 36)
a 24 duchovních bodů.
Tvé schopnosti jsou:
Síla: 30   Bystrost: 30   Vytrvalost: 30   Zručnost: 30   
Věk: 14 vteřin.
Narození: ve čtvrtek 28. listopadu 110 (herního času)
Útěk při 15 životních bodech.
Protiútok vypnut.
Dlouhé bojové hlášky.
Při téhle teplotě se dá žít.
  • První řádka nám sděluje, že náš krátký popis (tedy to, co je z nás okamžitě vidět, když někdo vstoupí do místnosti, kde se nacházíme) je „Pokus Nový“, kde „Pokus“ je hráčské jméno, které jsme si vybrali, když jsme vstupovali do hry, a „Nový“ je náš prozatímní titul, dokud jsme nesplnili první herní úkol; o těch si ale více řekneme až ve třetím kroku.
  •  Na další řádce se dozvídáme, jak velkou část hry jsme již zvládli prozkoumat, nebo přesněji, kolik jsme již nasbírali zkušeností z požadovaného minima pro ty, kdo se chtějí v rámci hry stát něčím více než jen obyčejnými smrtelníky. Zkušeností je možno nasbírat i více, takže velmi zkušený hráč může mít v tomto řádku uvedeno i o hodně více než 100 %.[6]
  •  Další dvě řádky nám říkají, kolik máme životních, duševních a duchovních sil. Životní body potřebujeme k samotnému přežití hráčské postavy ve hře — ztrácíme je zraněními, nemocemi, otravami a podobnými příhodami, a doplňují se nám posléze samy rychlostí, která závisí hlavně na tom, zda jsme dobře najedení a napití. Duševní body potřebujeme k různým zvláštním duševním úkonům, zejména kouzlům, kterých můžeme ve hře provádět bezpočet (viz pomoc kouzla) — tím se nám spotřebovávají, a jejich následné doplnění probíhá stejně jako u bodů životních. Konečně duchovní body určují náš mravní kredit, tedy přibývá jich, konáme-li dobré skutky, a ubývá, konáme-li skutky zlé. Máme-li duchovních bodů více, budou nám spíše pomáhat kladní hrdinové hry a jejich kouzla, máme-li jich méně, budeme doma spíše mezi padouchy. Ovšem pozor, sníží-li se nám počet duchovních bodů pod nulu, mohou se do našeho herního těla nastěhovat démoni (viz pomoc démoni), kteří nás pak budou nutit dělat věci, které nechceme.
  • Další dvě řádky nás informují o našich hráčských schopnostech, které ovlivňují naši úspěšnost při různých úkonech, které ve hře budeme provádět, a které ale také různým konáním postupně rostou (například řešením logických hádanek se nám zvyšuje bystrost, nošením těžkých předmětů se nám zvyšuje síla atd.).
  •  Následuje údaj o našem hráčském věku, což je reálná doba, kterou jsme již strávili hraním hry, o našem vstupu do hry v herní časomíře (herní čas ubíhá devětkrát rychleji než reálný) a o třech vlastnostech, které můžeme změnit příkazem nastavení — že z boje utečeme, pokud naše životní síla klesne pod 15 bodů, že v případě napadení nezačneme automaticky s útočníkem také bojovat a že chceme v případě boje být podrobně informováni o každé padlé ráně.
  • Zbylé řádky — nyní je jen jedna, ale v průběhu hry jich může být více — nám říkají, jak je nám teplo, zda máme hlad nebo žízeň, zda jsme nemocní nebo opilí a pod.

Objekt hráče má i řadu dalších vlastností, ale s těmi, které si můžeme prohlížet příkazem stav, si ještě několik kroků dobře vystačíme.

Poloha a pohyb objektů[editovat]

To, že při zkoumání objektů, s nimiž se ve hře setkáváme, musíme trochu jinak přistupovat k místnostem, a trochu jinak k ostatním objektům, je dáno především jejich polohou vůči našemu hráčskému objektu. Náš hráčský objekt se totiž nachází uvnitř objektu místnosti, ale vně jiných objektů, které v místnosti vidíme společně s jejím popisem a které si můžeme jednotlivě třeba prohlížet nebo očichávat.[7]

Vzájemná poloha objektů není pevně daná, nýbrž se může během hry měnit. Když v popisu místnosti vidíme, že můžeme jít dále na sever, a zadáme příkaz sever, přesuneme se z jedné místnosti do druhé.[8] Pohybovat z místnosti do místnosti se samozřejmě mohou i jiné objekty než jen hráči — jiné živé bytosti se mohou ve hře pohybovat podobně jako hráči, a neživé objekty mohou být do sousední místnosti třeba odstrkány nebo přeneseny.

Když hráč odstrká předmět, který leží v jedné místnosti, do místnosti sousední, znamená to, že se mezi místnostmi přesunuly dva objekty — objekt hráče a objekt odstrkaného předmětu — aniž by jeden byl obsažen v druhém. Když hráč předmět přenese, je pohyb složitější — hráč musí nejprve předmět vzít, čímž se předmět přesune z místnosti do hráčova inventáře, pak se hráč (se všemi předměty, které u sebe zrovna má) přesune do druhé místnosti, a má-li se předmět ocitnout v této nové místnosti, musí se z objektu hráče ještě přesunout do místnosti, tedy hráč ho musí položit. Hráč v tomto případě pro předmět funguje jako jakási mezimístnost, nebo přesněji, jako pohybující se nádoba.

Úplně stejně, jako může obsahovat předměty objekt hráče, je mohou obsahovat i objekty téměř všech nehráčských živých bytostí a celá řada objektů neživých: když ve hře leží sušenka na stole, pak je objekt sušenky v inventáři objektu stolu, když ve hře lahev obsahuje vodu, pak je objekt vody v inventáři objektu lahve, když je ve hře městský strážce vyzbrojen halapartnou, pak je objekt halapartny v inventáři objektu strážce. Tyto objekty, nacházející se v jiných objektech, můžeme často prozkoumávat (tedy prohlížet si, očichávat atd.) přímo, jindy je potřeba specifikovat je dodatkem o jejich poloze, tedy např. „očichej vodu v lahvi“.

Objekty, které nejsou místnostmi, ale mohou přitom obsahovat jiné objekty — pro jednoduchost můžeme mluvit o „nádobách“, ale nezapomínat přitom, že mezi nádoby v tomto smyslu patří třeba i stoly nebo hráči — se samy nacházejí obvykle v místnostech, ale mohou být přesunuty i do jiných nádob, takže vzájemné vnoření objektů může být docela složité. Když například hráč sebere ležící minci, ze svého batohu vyndá peněženku, minci do ní vloží, a pak ji uklidí zpátky do batohu, nastávají postupně tyto vzájemné polohy zúčastněných objektů:

1.  Hráč si nese batoh a v něm peněženku. V téže místnosti se nachází mince.

místnost

hráč

batoh

peněženka

mince

2.  Hráč si bere minci, ta se tím přesouvá do jeho inventáře.

místnost

hráč

batoh

peněženka

mince

3.  Hráč si vyndává z batohu peněženku, ta se tedy z inventáře batohu přesouvá do inventáře hráče.

místnost

hráč

batoh

peněženka

mince

4.  Hráč dává minci do peněženky, tedy mince se z inventáře hráče přesouvá do inventáře peněženky.

místnost

hráč

batoh

peněženka

mince

5.  Konečně, hráč vrací peněženku do batohu, tedy peněženka se přesouvá z inventáře hráče do inventáře batohu, který je ovšem celou dobu v inventáři hráče, stejně jako hráč v inventáři místnosti.

místnost

hráč

batoh

peněženka

mince

Vzájemné vztahy ve hře mohou být tu a tam ještě o poznání komplikovanější (například když se v místnosti nachází třeba vůz tažený dvěma voly, z nichž každý má svůj postroj, a vůz obsahuje jednak korbu, jednak kozlík, na kterém sedí vozka, hráč zaplatí vozkovi cestovné, vozka si obdržené mince vloží do měšce, hráč i se vším svým vybavením nastoupí na korbu vozu a vůz odjede do jiné místnosti), jakmile jsme však pochopili princip, dokázali bychom po chvilce rozmyšlení podobně rozkreslit i jakkoli složitý případ. Pochopení principu je na tomto místě důležité, protože až začneme sami programovat různé akce s herními objekty, bude vždy základní a klíčové rozlišení, kde se vlastně tyto objekty vzájemně nacházejí.

Úkoly[editovat]

Na konci každého kroku bude uvedeno několik úkolů. Budou děleny do dvou skupin na úkoly povinné a úkoly dobrovolné. Splnění povinných úkolů se v dalších krocích bude předpokládat (tedy pokud jste například měli v rámci povinných úkolů v jednom kroku něco si vyzkoušet, v dalším kroku se už vychází z toho, že jste si to vyzkoušeli a není potřeba vám to již vysvětlovat), plnění dobrovolných úkolů zas leckdy přinese zajímavé herní zážitky.

Povinné[editovat]

  • Pokud máte numerickou klávesnici a ještě jste si nenastavili pohyb do základních směrů pomocí numerických kláves, učiňte to nyní. Ušetří vám to spoustu úhozů do klávesnice a zjednoduší vám to orientaci.
  • Vyzkoušejte si příkaz výstroj (též inventář, nebo zkratkou i).
  • Projděte se po Domě, prozkoumávejte různé objekty, zkuste je různými způsoby přemisťovat (přenášet, odstrkávat).
  • Příkazem nastavení (nebo zkratkou nast) si otevřte uživatelské nastavení a podívejte se, co všechno můžete nastavovat. V sekci „Vzhled výstupu“ si nastavte jednak vypisování přírůstku a úbytku životních a duševních bodů, jednak ukazování obojího (tedy dlouhého i krátkého) popisu místností. Můžete si případně zkusit přenastavit i něco dalšího, ale zatím to nepotřebujeme a je pro nás důležité prostě vědět, že toto nastavení máme k dispozici a můžeme je v případě potřeby změnit.

Dobrovolné[editovat]

  • Nasbírejte tolik objektů, abyste už následující objekt nemohli vzít do rukou (tedy při pokusu o vzetí objektu dostanete hlášku, že už na něj nemáte dost místa).
  • Dojděte do galerie, která se nachází ve druhém patře Domu, a prohlédněte si tamní výstavu o hře Prahy.
  • Najděte kouzelný plán Domu, na kterém jsou hráči nacházející se v Domě vidět jako pohybující se tečky.
  • Najděte zrcadlo, s jehož pomocí můžete měnit svůj vzhled, a nastavte si vzhled, který vám vyhovuje.

Pomocné stránky[editovat]

Poznámky[editovat]

  1. Kdybychom chtěli být zcela přesní, museli bychom mezi objekty zmínit ještě některé řídicí programy, které však pro běžného hráče zůstávají skryty a k prozkoumání se mu nenaskytnou.
  2. Prahy u většiny příkazů nabízejí více možností, jak příkaz slovně zadat. Například místo rozhlédni se je možno napsat též rozhlédnu se nebo rozhlížím se.
  3. V hráčském nastavení, přístupném příkazem nastavení, si můžeme zapnout několik způsobů zobrazování popisu místnosti — buď popis dlouhý, tedy ten, který vidíme ve hře implicitně, nebo popis krátký, tedy jen stručné označení místnosti (například Jídelna nebo V úzké skalní chodbě), nebo popis obojí. Jako budoucí programátoři si můžeme hned zkraje zapnout obojí popis, abychom na první pohled viděli hned dvě vlastnosti objektu místnosti.
  4. Mohli bychom napsat též p Josefa s velkým písmenem na začátku jména, ale herní ovladač to nerozlišuje. Rozlišuje však případná velká či malá písmena v prvním slově, tedy třeba P Josefa by nefungovalo.
  5. Pro každý z těchto příkazů si můžeme přečíst rovněž nápovědu zadáním příkazu pomoc doplněného jménem příkazu, tedy třeba pomoc hmatej.
  6. Jaké zkušenosti jsme již konkrétně nasbírali v různých oborech herního konání, to se můžeme dozvědět pomocí příkazu zkušenost. Na začátku jsou ovšem naše jednotlivé zkušenosti ještě nulové, proto se k nim vrátíme až v pozdějších krocích tohoto kurzu.
  7. Vzájemná poloha objektů — stejně jako jejich další vzájemné vztahy — je technicky vzato jen další vlastností těchto objektů. Stejně jako je v objektu zapsán třeba jeho vzhled nebo zápach, je v něm zapsáno, uvnitř jakého jiného objektu se nachází, a jaké další objekty se případně nacházejí v něm.
  8. Objekty jsou vlastně shluky informací zapsané kdesi v paměti počítače. Když se ve hře přesunují, tak se v paměti počítače samozřejmě nepřesunují; zůstávají na svém místě, jen se změní hodnoty jejich vlastností znamenajících okolí a obsah. V konkrétním případě hráče jdoucího na sever se v první místnosti z vlastnosti „obsah“ (programátorsky budeme posléze mluvit o „inventáři“) vymaže odkaz na objekt odcházejícího hráče, ve druhé místnosti se odkaz na tentýž objekt hráče naopak do této vlastnosti přidá, a v objektu hráče samotného se změní hodnota vlastnosti „okolí“ z odkazu na první místnost na odkaz na druhou místnost.