Popis programu 3D-bludiště

Funkce "Program"

Tato funkce má spustit funkci "Animace" a následně "Menu".

Funkce "Hra" - void Hra ( void )

Tato funkce je tělem samotné hry - skládá se z několika přípravných fází ( - vytvoření proměnných, spuštění funkce "VB" -
- vypsání bludišť, otevření zdrojového souboru bludiště, a hledání startu ) a vlastího cyklu hry:
1. Větev "posun" čeká až hráč stiskne nějakou klávesu a poté se Xová, Yová souřadnice posune podle toho,
jakým směrem je hráč zrovna natočen: 1-nahoru, 2-doleva, 3-dolů, 4-doprava, nebo se hráč otočí.
2. Větev "Na zdi?" testuje zda hráč stojí ve zdi( používá k tomu funkci "BZ" - "bacha zeď") jestliže
tato funkce vrátí 0, znamená to že hráč stojí na zdi a větev "Zeď-zpět" ho vrátí zpátky odkud přišel, jestliže
funkce vrátí 2 znamená to že hráč je v cíli a hru příkazem goto ukončí.
3. Větev "Kresli" spusí funkci "KSAP" ( - Kresli strop a podlahu ) a následně funkci KZ ( - kresli zdi )

Funkce "KZNP" ( - kresli zdi na pozici ) - void KZNP( int x, int y, int cop)

Tato funkce vykresluje zdi, cíl, start na pozici x a y ( y udává ypsilonovou vzdálenost od hráče ke zdi, x udává
xovou vzdálenost od hráče ke zdi, záporné hodnoty jsou vlevo a kladné vpravo ).
1. Větev "proměnné" vytvoří proměnné.
2. Větev "nastavení" nastavuje některé hodnoty Větev nastav co nastavuje barvu kříže ve zdi ( normální zeď kříž
nemá jen cíl ), nebo když je typ zdi 0 - nic, nebo 2 - start (zde je start průchodný a ve hře není vidět,
kdežto cíl je zeď ) ukončí příkazem goto tuto funkci. Větev "nastav x" a "nastav y" nastavuje Xovou a Yovou
souřadnici ( zde nevím proč - je to vychytávka na chybu jejíž příčinu se mi nepodařilo zjistit a tak jsem to vyřešil takto ).
3. Větev "kresli" vykresluje samotnou zeď.
- Větev "čelní strana" kreslí čelní stranu ve větvi "Y" se nastavuje ypsilonovou souřadnici na obrazovce.
a) Větev "levá hrana" počítá Xovou souřadnici na obrazovce.
b) Větev "nastav pro pravou hranu" nastavuje proměnné pro kreslení pravé hrany.
c) Větev "pravá hrana" počítá Xovou souřadnici na obrazovce.
d) Větev "kresli" maže pozadí za zdí a kreslí hrany.
- Větev "boční strana" kreslí bok zdi.
a) Větev "pravá strana" kreslí pravý bok zdi.
- Ve větvi "vypočítej Y" se počítá ypsilonová pozice na obrazovce.
- Ve větvi "vypočítej X a kresli" se počítá Xová pozice na obrazovce a kreslí se bok zdi.
b) Větev "levá strana" kreslí levý bok zdi. Pracuje podobně jak větev "pravá strana".
4. Ve větvi "konec jsou návěstí pro příkazi goto.

Funkce "KZ" ( kresli zdi ) - void KZ ( TypSoubor blu, int mX, int mY,int Směr, int x, int y )

Tato funkce má za úkol pomocí funkce "KZNP" kreslit zdi.
1. Větev "proměnné" ma za úkol připravovat proměnné.
2. Větev "kreslení" kreslí zdi.
- Ve větvi "nahoru" probíhá kreslení od leva do prostřed a z prava do prostřed a odzadu dopředu, to proto,
aby se boky nepřekývaly.
- V ostatních větvích probíhá stejný systém zobrazování zdí, jen v jiném směru.

Funkce Nápověda - void Nápověda ( void )

Tato funkce obstarává texty do nápovědy. 1. Větev "proměnné" ma za úkol připravovat proměnné a také dá hráči nabídku.
Buď si vybere krátkou nápovědu, nebo dlouhou.
2. Větev "příprava textu" vloží text do proměnné.
3. Větev "piš" spustí funkci PT a předá ji text nápovědy.
4. Ve větvi "konec" se čeká na stisk klávesy a poté se obrazovka vrátí zpět do původního módu.

Funkce "KSAP" ( kresli strop a podlahu ) - void KSAP ( void )
Tato funkce kreslí strop a podlahu.
1. Větev "proměnné a mazání obrazovky" připravuje proměnné a maže obrazovku.
2. Větev "kresli" kreslí srop a podlahu.
Funkce "Animace" - void Animace ( void )
Tato funkce dělá úvodní animaci.
1. Větev "proměnné a mazání obrazovky" připravuje proměnné a maže obrazovku.
2. Větev "animace" zajišťuje vlastní animaci.
- Ve větvi "kresli čáry" je vykreslován efekt čary jedoucích nahoru.
- Ve větvi "kresli elipsu" se vykreslí vyplněná elipsa.
- Ve větvi "piš a podtrhni" se vypíše text "3d - bludiště" a následně se podtrhne.
3. Ve větvi "čekej" se čeká 0,1 sek.

Funkce "Menu" - void Menu ( void )

V této funkci je obsažen zdrojový kód menu.
1. Větev "proměnné" připravuje proměnné a jsou v ní obsažena některá návěstí.
2. Větev "pozadí" kreslí šikmé čáry na pozadí.
3. Větev "menu" obstarává menu a animaci obdélníků na pozadí.
- Ve větvi "nastav" program nastaví proměnné a obrazovku pro menu.
- Větev "menu" je už vlastní menu a animace obdélníků.
a) Ve větvi "smazání a posun" se mažou a posunují obdélníky, také se zde vypisuje text menu.
b) Větev "kolize obdélníků?" se kontroluje zda obdélníky kolidují, nebo ne, když ano je změnou směru
zařízeno jejich odražení.
c) Větev "kolize o okraj?" se zjišťuje zda obdélníky kolidují o odraz, když ano je změnou směru
zařízeno jejich odražení.
d) Ve větvi "klávesa" se zjišťuje zda hráč nestiskl nějakou klávesu, když ano jsou vikonány
příslušné příkazi.
e) Ve větvi "čekání" se čeká 25 milisekund.
4. Ve větvi "konec" jsou obsažena návěstí ukončující menu.
Funkce "BZ" ( bacha zeď ) - int BZ ( TypSoubor blu, int x, int y, int mX )
V této funkci se zjišťuje zda hráč stojí ve zdi, v cíli, nebo je ve startu.
1. Ve větvi "proměnné a nastavení soubouru bludiště" se připravují proměnné a soubor bludiště.
2. Ve větvi "zeď?" se zjišťuje zda hráč stojí ve zdi, v cíli, ve startu, nebo ve volném prostoru.

Funkce "VB" ( - výběr bludišť ) - string VB ( void )

V této funkci si hráč vybere z nabídky bludišť.
1. Větev "proměnné" připravuje proměnné a soubor se seznamem bludišť - nazvi.bln.
2. Větev "napiš výběr bludišť" napíše výběr bludišť.
- Větev "název" připraví název bludiště.
- Větev "vypiš" vypíše název bludiště.
3. Ve větvi "vyber si" si hráč vybere bludiště.
4. Ve větvi "konec" se zavře soubor se seznamem bludišť a vrátí se název bludiště.

Funkce "Ulož" - void Ulož ( TypSoubor bludiště, int i, int j )

Tato funkce patří do editoru bludišť. Má za úkol uložit editované bludiště.
1. Větev "proměnné" připravuje proměnné.
2. Větev "ulož" ukládá bludiště. Probíhá v ní cyklus, který postupně zjišťuje barvu daného políčka a když je zelená
zapíše do souboru 3 - start, když černá tak 0 - nic, když bílá tak 1 - zeď a když modrá tak 2 - start.

Funkce "Síť" - void Síť (int x, int y)

Tato funkce vykresluje rámečky pro editor bludišť do níž se zakreslují jednotlivé zdi.
1. Větev "proměnné" připravuje proměnné.
2. Větev "kresli" kreslí jednotlivá políčka.

Funkce "Editor" - void Editor ( void )

Tato funkce Editoje bludiště.
1. Větev "proměnné" připravuje proměnné.
2. Větev "bludiště" otevře nové bludiště, nebo otevře staré.
- Větev "nové" bludiště.
a) Ve větvi "zápis maxX a maxY" se zapíše maximální Xová a Yová pozice.
b) Ve větvi "pokračování" se pokračuje dále v přípravě na editaci. Připravuje se zde obrazovka
a zapisuje se název bludiště do seznamu bludišť.
- Větev "otevřít" otevře staré bludiště.
3. Ve větvi "editace" hráč edituje bludiště.
- Ve větvi "klávesa?" se čeká až hráč zmáčkl klávesu a pak se udělá to co hráč zmáčkl.
- Ve větvi "kontrola" se kontroluje zda kurzor není mimo obrazovku. Když ano je posunut zpět.
- Ve větvi "zobraz kurzor" se zobrazuje kurzor.
4. Ve větvi "konec" jsou umístěna návěstí.

Funkce Otevři - void Otevři ( TypSoubor blu )

Funkce "Otevři" otevře již vytvořené bludiště.
1. Větev "proměnné" připravuje proměnné.
2. Větev "otevři" otevře bludiště pomocí dvou cyklů.
3. Větev "konec" nastavuje zpět pozici v souboru na začátek.

Funkce "PT" ( piš text ) - void PT ( string text[43], int c )

Tato funkce má na starost vypsání textu nápovědy.
1. Větev "proměnné" připraví proměnné a připraví textový mód obrazovky.
2. Větev "piš" vypíše text na obrazovku.
3. Ve větvi "konec" je umístěno návěstí.

autor : Jan Šimonek