Staonův svět - Programování v C/C++ 30.5.

Programování v C/C++ zápočet 30.5.2006

Game

Naprogramujte interpret jednoduchých her. Hra je vždy pro jednoho hráče, cílem hráče je dostat se z počátečního stavu hry do vítězného stavu. Interpret hráči v každém stavu vypíše informaci o stavu a nabídne mu, co může dělat dál. Na základě tohoto rozhodnutí se hráč dostává do dalšího stavu. Plán hry je orientovaný graf, má jeden počáteční stav, aspoň jeden vítězný stav a libovolný počet prohrávajících stavů. Když se hráč dostane do prohrávajícího stavu, může začít hru znovu pouze ze stavu počátečního.
Vaším úkolem je napsat interpret takových her, který ukládá plán hry v textovém souboru předepsaného formátu.

Příklad vstupu:
(např. u testu to byly soubory)

===
=state A
=description Jsi ve vrcholu A. Kterym smerem se vydas?
=choice B na vychod
=choice C na sever
=choice A nikam, jeste si to rozmyslim
===
=state B
=description Jsi ve vrcholu B. Vylezl jsi ze same radosti na (b)orovici,
uz se ti nikam nechce, takze v teto hre koncis.
=failure
===
=state C
=description Dorazil jsi do vrcholu C, ktery je ©ilem teto hry. Takze
jsi vyhral!
=victory

Podrobné instrukce:

Popis každého stavu začíná řádkou obsahující „===“, součástí popisu stavu jsou atributy stavu. Zápis každého atributu začíná znakem „=“ na nové řádce. Zápis atributu může být víceřádkový, končí až v místě, kde začíná zápis jiného atributu, popis nového stavu, nebo kde končí plán hry. Hodnoty atributu nesmí obsahovat znak „=“ zapsaný jako první znak na řádku.

Povinné atributy:

„state <state_id>“ – identifikace stavu, který se hráči nezobrazuje, neobsahuje mezeru
„description <description>“ – popis stavu, zobrazuje se hráči

Volitelné atributy:

„choice <state_id> <description>“ – možnost hráče, jak se pohybovat z tohoto stavu, popis možností je <description>, <state_id> je identifikátor stavu, do kterého by se po zvolení této možností hráč dostal
„failure“ – stav, ve kterém hráč prohrál; implicitně je hráči nabídnuto pokračovat ve hře, anebo skončit
„victory“ – stav, ve kterém hráč zvítězil ; interpret končí

Spuštění interpretu:

game.exe <soubor_s_planem_hry>

Zbytek jen ve zkratce. Interpret načte a zkontroluje plán hry. Kontrola zahrnuje detekci nedosažitelných stavů, existenci alespoň jednoho vítězného. Pokud je to v pořádku, spustí hru. Není omezení textových popisků (popisky mohou být i na více řádkách), program nemusí být optimalizovaný na rychlost.

Závěrem bych dodal, že toto zadání bylo nad mé síly :-). Možná bych to zvládl za 4 hodiny, ale určitě ne za 2,5. Tohle je téměř přesně opsané zadání.

Michal

Matfyz | 30.5.2006 Út 16:40 | <<< trvalý odkaz >>> | tisk | 6 komentářů

Komentáře k textu

Rss komentářů tohoto textu

[1] reaguj
Tiboh 30.5.2006 Út 17:02

Uch, tak dalsi predmet, kterej nedam…

[2] reaguj
Staon mejl web 30.5.2006 Út 17:33

No, dobrý. To jsou magoři. Na 2,5 hodiny je to dost šílenost. Jenom rozparsovat vstup by mi trvalo přes hodinu a nemám ponětí, kdy bych dělal vlastní hru a kontrolu vstupu :(

[3] reaguj
PeterP mejl web 1.6.2006 Čt 22:44

Mám otázku pre tých, ktorý už boli na záp.teste. Nehorili tam o tom, či je povolené, resp. zakázané používať C++? Pevne verím, že budem môcť, inak bude ťažko.

[4] reaguj
Staon mejl web 1.6.2006 Čt 23:03

[3] PeterP : a ještě před měsícem, když jsem dal na web řešení Bystroňova odtrhávání vrcholů, jsi o C++ nechtěl ani slyšet :))

[5] reaguj
PeterP mejl web 3.6.2006 So 15:12

[4] Staon : No, časy sa menia. My sme totiž mali na cvičeniach na céčku Dr. Yaghoba a s ním vyzerali hodiny dosť odlišne ako u ostatných, o ktorých som počul. Teda v normálnej učebni najskôr povedal pár minút to, čo bolo približne aj na prednáške, potom sa zasmial a povedal, ako to ide síce pomalšie, ale šikovnejšie v c. A v labe sme cvičili iba c. Teda ja som ešte vôbec nikdy nepoužil céčkovské stringy atď.

Teda: „Pevne verím, že budem môcť, inak bude ťažko.“

[6] reaguj
Staon web 5.6.2006 Po 12:47

[3] PeterP : zklamu tě, dneska nám C++ výslovně zakázali. Chtěli jen Cčkové knihovny.

Přidej komentář!

  Gravatar povolen.

Příspěvěk je formátován Texy! syntaxí. Není povoleno HTML, odkazy se převádějí automaticky.
Autor stránek Staonův svět se jmenuje?
Odpověd: Cornelius Latipus Staon

Autor vzhledu: Staon. Stránky jsou postaveny na redakčním systému RS2 (verze RC2).