Maturitní práce - Martin Müller
Maturitní projekt - HAD
Jako maturitní projekt jsem zvolil konzolovou aplikaci v jazyce C určenou pro operační systém Windows. Kvůli předchozím zkušenostem s programováním konzolových aplikací jsem zvolil editor Borland C++. Vytvořil jsem adaptaci známé hry Snake, kde uživatel směrovými aklávesami ovládá hada v aréně. Cílem je aby had spolykal co nejvíce objektů (beden) generovaných na obrazovce a tím dosáhl co nejvyššího score. Přitom nesmí dojít ke kolizi hada s vlastním tělem, stěnami a druhým hadem.
Program sestává z relativně velkého množství podprogramů. Těmi jsem řešil problém vícenásobného opakování kódu na různých místech programu, které by běh aplikace zpomalovalo (nebo alespoň zbytečně zatěžovalo operační paměť). Dílčí podprogramy jsou pak volány v poprogramech vyšší úrovně a ty jsou zase volány z hlavního programu (main).
Po spučtění aplikace (přeloženého .EXE souboru) je uživatel uveden do jednoduché nabídky. Zde se krom loga s názvem hry nachází 3 aktivní odkazy na funkce programu. Poslení položka nabídky "Konec" hru okamžitě ukončí a vrátí uživatele do Windows. Další odkaz "Ovladani" umožní uživateli nastavit rychlost hada, typ arény a zapnout či vypnou hru dvou hráčů. Poslední odkaz v nabídce "Nova hra" potom spustí vlastní hru.
Při hře se na obrazovce nachází horní a dolní lišta, navolená aréna, 1 či 2 hadi a vždy 1 vygenerovaná bedna. Horní lišta infromuje o stavu score. Score narůstá v závislosti na množství a typu beden, které se hráči podaří nasbírat. Pozice a typ beden je generován náhodně. Bodová hodnota potom závisí na rychlosti hry (obtížnosti) a barvě (typu) bedny. Pričemž ve hře existují 4 typy beden a navíc 1 typ speciální (časově omezený bonus). Dolní lišta informuje hráče o funkčních klávesách pro pozastavení a vypnutí hry (při pozastavení se na horní liště zobrazí bílý nápis "PAUZA").
I při výběru arény má uživatel více možností. Standartně je ve hře pro arénu přednastavená volba "vypnuta". V tomto případě se žádné stěny nezobrazují a pokud se had ocitne na okraji arény, objeví se na protějším okraji (hranice arény jsou průchozí). Naopak při volbě "zakladni" se objeví stěna po celé hranici arény a při kolizi hada s ní se hra ukončí. Existuje ještě volba "specialni". Tato možnost je kombinací 2 předchožích. Tedy kolem arény se vykreslí zeď, v níž se nachází několik průchodů (to jsou místa kde je hranice arény průchozí jako u možnosti "vypnuta").
Samotný had se skládá z hlavového políčka, které je vždy 1. polem ve směru pohybu, a článků těla hada. Hlavička se v průběhu hry nemění, naopak tělo hada mění svou délku v závislosti na počtu a typu sezbíraných beden. Hráč hada ovládá směrovými klávesami. Rychlost hry (pohybu hada) se nastavuje v nabídce "Ovladani" a nabývá velikosti od 1 do 10. Při rychlosti 1 je interval mezi dvěma pohyby hada 145 milisekund, při rychlosti 10 je to pouhých 10 ms.
Z funkcí programu nebyla zmíněna už jen hra 2 hráčů. Tento mód hry se od standartního liší pouze v přítomnosti 2 hadů ve hře (místo obvyklého 1). Druhý had je ovládán vlastními funkčními klávesami, které jsou umístěné na levé straně klávesnice, aby si oba hráči nepřekáželi (funkční klávesy jsou specifikovány v nabídce "Ovladani"). Jinak se 2. hráč rovněž snaží nasbírat co nejvíce beden. Hra je zajímavější díky interakci 2 hráčů v reálném čase, jež přispívá k oživení hry.
Hra používá pouze textový výstup v příkazovém řádku a tím pádem je snadno přenositelná i na systémy GNU/Linux. HAD je nenáročnou konzolovou aplikací, kterou by neměl být problém používat i na starých, hardwarowě slabých, počítačích.