IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Ako nakŕmiť hada (2. časť)

... dokončenie z minulej lekcie

Začneme obsluhou vytváranie nových vecí. Pred obsluhu čakanie vložte podmienenej vykonanie príkazov Poličkové grafika
, Nazvite ho vytváranie vecí. Obsah vidíte na ďalšom obrázku.

Poličkové grafika

Novú vec budeme vytvárať náhodne s určitou pravdepodobnosťou, preto do testu podmienky dáme porovnaní náhodného čísla s konštantou. Nastavením hodnoty na 0.03 zaistíme, že sa nová vec vytvorí v každých 3 zo 100 priechodov programu hlavnej slučkou, pravdepodobnosť vzniku veci je teda 3%. Vzhľadom k tomu, že jeden priechod hlavný slučkou trvá 0.05 sekundy, budú veci vznikať v priemere každých 1.7 sekundy.

K vytvoreniu veci na ploche použijeme opäť Petríkov kamarátku - Lucku. Najskôr ju nastavíme na náhodné políčko plochy. Pre horizontálnu pozíciu Lucky použijeme prvok šírka plochy Poličkové grafika
, Ktorý nám odovzdá číselnú hodnotu 20, čo je šírka plochy programu. Je možné číslo zadať priamo, ale výhodnejšie je pracovať s všeobecnými číslami. Ušetríme si tak problémy, až niekedy v budúcnosti budeme niečo v programe meniť, napr. Zmeníme ak rozmery plochy. Šírku plochy odovzdáme funkciu náhodné číslo Poličkové grafika
, Ktorá vytvorí náhodné číslo v rozsahu od 0 do 19.999999999. Nasledujúce funkcie celočíselná časť Poličkové grafika
odstráni desatinnú časť čísla. Vznikne tak náhodné celé číslo v rozsahu 0 až 19, čo sú horizontálne súradnice prvého až posledného políčka plochy. Pripomeňme si, že sa políčka číslujú od nuly z ľavého dolného rohu smerom doprava a nahor. Podobne vytvoríme aj náhodnú pozíciu vo vertikálnom smere.

Za nastavením náhodné pozície nasleduje podmienený príkaz testujúci, či je nastavené políčko prázdne. Ak áno, rozhodne sa program ďalším podmieneným príkazom, či vytvorí jed alebo jedlo. Náhodné číslo porovnávame s hodnotou 0.1, ktorá zaistí, že sa v 1 z 10 prípadov vytvorí jed, v ostatných prípadoch jedlo. Všetko vidíte na obrázku:

Poličkové grafika

Na ďalšom obrázku vidíte obsluhu vytvorenie nového jedu. Jedy budeme vytvárať s rôznou frekvenciou. Najčastejšie chceme vytvárať muchotrávku a najmenej často krabičku s jedom. Použijeme na to viacstupňové vetvenia príkazov Poličkové grafika
. Větvicím výrazom bude náhodné celé číslo v rozsahu 05 vytvorené pomocou prvkov celočíselná časť Poličkové grafika
, Náhodné číslo Poličkové grafika
a číslice 6 Poličkové grafika
.

V prvej vetve vytvoríme lebku pre 2 prípady z 6 (hodnoty 0 a 1), pravdepodobnosť vzniku lebky bude teda 33%. V druhej vetve vytvoríme krabičku s jedom s menšou pravdepodobnosťou - pre 1 prípad z 6 (hodnota 2), pravdepodobnosť vzniku je 17%. V ostatných prípadoch vytvoríme muchotrávku - pre zvyšné 3 prípady z 6 (hodnoty 3, 4 a 5), pravdepodobnosť 50%.

Obsluhu vytvorenie jedu zakončíme príkazom pre zapnutie prepínača 2 Poličkové grafika
. Ako si spomínate, prepínač 1 Poličkové grafika
sme použili na indikáciu, že na políčku je múr. Prepínač 2 budeme používať na indikáciu jedu na políčku. To nám neskôr uľahčí prácu, nebudeme musieť testovať všetky možné jedy, ktoré v programe použijeme.

Poličkové grafika

Obsluhu vytváranie jedla zaistíme inou metódou. Ako vidíte na ďalšom obrázku, obsluha je vďaka použitiu zoznamu celkom jednoduchá.

Na začiatku obsluhy náhodne vyberieme stránku zoznamu, z ktorej prevezmeme predmet jedla. Index jedla nastavíme na náhodné celé číslo v rozsahu 04, čo sú indexy prvý až posledný stránky zoznamu. Namiesto priameho zadania čísla rozsahu náhodných hodnôt použijeme prvok udávajúce počet stránok v zozname Poličkové grafika
. Vďaka tomu môžeme v budúcnosti pridávať do zoznamu ďalšie jedlá, bez toho aby sme museli meniť obsluhu jedál v programe. Číslo jedla si pomocou prvku číselná hodnota 1 (rozsah 0 až 1023) Poličkové grafika
uchováme v políčku pre budúce použitie. Ďalším príkazom položíme predmet jedla na pozícii Lucky Poličkové grafika
. Posledným príkazom bude zapnutie prepínača 3 Poličkové grafika
. Prepínač 3 použijeme na indikáciu, že na políčku je jedlo.

Poličkové grafika

Tým je obsluha vytváranie nových vecí hotová a môžete ju vyskúšať (nezabudnite na obsluhu čakanie na konci hlavnej slučky). Uprostred plochy by sa mala objaviť hlava hada s otvárajúce sa pusou a okolo vznikajúce nové veci. Program ukončíte kliknutím na krížik Poličkové grafika
na hornej lište okna vpravo.

Pokračujeme obsluhou ovládanie hada. Doplňte na začiatok hlavnej slučky programu (pred obsluhu vytváranie vecí) prvok viacstupňové vetvenia príkazov Poličkové grafika
s názvom ovládanie hada. Obsluhu vidíte na nasledujúcom obrázku.

Poličkové grafika

Vetviaci hodnotou bude funkcia vstup klávesy (nečaká na stlačenie) Poličkové grafika
. Klávesom vľavo otočíme Petríka (teda hlavu hada) doľava a zapneme príznak, že had je v pohybe. Podobne obslúžime aj klávesy ostatných smerov. Ako posledný obslúžime Esc a to tak, že príkazom koniec funkcie Poličkové grafika
(zo skupiny riadenie programu Poličkové grafika
) Ukončíme funkciu. Pretože sa jedná o hlavnú funkciu programu, ukončíme tým aj celý program.

Program vyskúšajte. Kurzorovými klávesmi (šípkami) môžete otáčať hlavou hada do strán, klávesom Esc program ukončíte.

Našou ďalšou úlohou bude hada rozpohybovať. Rýchlosť pohybu hada zvolíme asi 2 kroky za sekundu. Aby sme mohli lepšie obsluhovať klávesnicu a generovanie vecí, cykluje hlavná slučka programu rýchlejšie (približne 18 až 20 priechodov za sekundu). Preto použijeme čítač pre ďalší krok, ktorý zaistí posun hada pri každom deviatom priechode cyklom.

Obsluhu pohybu hada vidíte na ďalšom obrázku. Umiestnite ju za obsluhu ovládanie hada, ale pred obsluhu generovanie nových vecí. Na začiatku obsluhy je vykonávaný test, či je had v pohybe (pri začatí hry totiž stojí na mieste až do stlačenia prvej klávesy smeru). Ak je tomu tak, dekrementuje sa (tj. Zníži o 1) čítač pre ďalší krok. Ak dosiahne nuly, môže had popojít o krok vpred. Najskôr znovu nastavíme čítač pre ďalší krok. Zvolili sme číslo 9, ktoré predstavuje približne 2 kroky za sekundu. Úplne presne s časovačom nemôžeme počítať, napr. V systéme Windows 98 je najmenší krok časovača približne 55 ms, zatiaľ čo vo Windows XP spravidla niečo pod 50 ms.

Poličkové grafika

Pred obsluhou posunu hada otestujeme, či nie je pred hadom nepriechodná prekážka. Za neprechodnou prekážku budeme považovať múr, ale aj samotného hada, teda niektorý z jeho článkov. Na vykonanie testu použijeme Lucku. Nastavíme ju na pozíciu Petríka, otočíme v jeho smere a prevedieme krok vpred.

Poličkové grafika

Ako si iste spomínate, múr sme označili prepínačom 1 Poličkové grafika
. Aby sme si to uľahčili, budeme tak označovať aj políčko s článkom hada. Ak je prepínač zapnutý, je pred hadom stenu alebo článok hada a had umiera. Prehráme zvuk nárazu (zvuky nájdete na stiahnutie na konci lekcie) a vykonáme animáciu smrti hada. Budeme sa ňou zaoberať až neskôr. Inak sa had môže posunúť vpred.

Poličkové grafika

V prípade posunu hada sa najskôr budeme zaoberať Petřík - hlavou hada. Zhruba uprostred obsluhy posunu hada vidíte, že Petřík prevedie krok vpred. Nasledujúce vetviaci konštrukcia uschová na novom políčku číslo udávajúce, ktorým smerom ležalo minulej políčko. Toto číslo nám pomôže neskôr pri hľadaní cesty ku koncu hada.

Poličkové grafika

Číslo predstavujúce smer na minulé políčko uchováme v číselnej premennej 2 Poličkové grafika
. Pre minulej políčko smerom vpravo použijeme číslo 0, pre smer hore 1, pre smer vľavo 2 a pre smer dole 3. Prípad pre minulý smer vľavo vidíte na obrázku, ostatné smery sú podobné.

Vráťme sa na začiatok obsluhy posunu hada o krok vpred. Lucku sme naposledy zanechali na budúcom políčku, kde testovala stav prepínača 1. Teraz ju otočíme späť a posunieme o krok vpred, tým ju vrátime na rovnakú pozíciu ako je hlava hada. Ešte môžeme doplniť prehriatiu zvuku kroku hada.

Nasleduje cyklus zaisťujúce posun článkov hada, ako vidíte na ďalšom obrázku. Počet priechodov cyklu je daný dĺžkou hada. Na začiatku je Lucka nastavená na pozíciu hlavy hada. Na každom políčku s článkom alebo hlavou hada je uchované číslo udávajúce smer na minulé políčko. Číslo predstavuje počet kvadrantov (tj. Štvrtín otáčky), o koľko sa musí Lucka otočiť proti smeru hodinových ručičiek od nulového uhla (nulový uhol zodpovedá smeru doprava).

Najskôr sa teda Lucka otočí na minulé políčko. Nasledujúcim príkazom prenesie predmet z minulého políčka na políčko, na ktorom stojí. Tým posunie článok hada o krok vpred. Ďalším príkazom zapne prepínač 1 Poličkové grafika
. Povedali sme si, že prepínačom 1 budeme indikovať nielen múr, ale aj článok hada. Posledným príkazom podíde Lucka o krok vpred, to znamená na ďalší políčko hada smerom k jeho koncu.

Poličkové grafika

Po vykonaní všetkých priechodov cyklom zostane Lucka stáť na políčku za novým koncom hada. To platí aj pre dĺžku 0, kedy sa nevykoná ani jeden priechod cyklom. Nasleduje posun hlavy hada o krok vpred a úschova smere na minulé políčko, ako sme si obsluhu popísali skôr. Vymastíme obsah políčka za koncom hada prázdnym políčkom (vykoná Lucka) a vypneme príznak, že je na políčku článok hada. V prípade nájdenia jedla alebo jedu na políčko neskôr doplníme nový článok hada.

Had je posunutý. Teraz si všimneme obsahu políčka na novej pozícii hlavy hada. Najskôr vyskúšame, ak je na políčku jedlo. Jedlo sme si označili prepínačom 3, budeme teda testovať prepínač 3 Poličkové grafika
. Obsluhu jedla vidíte tu na obrázku:

Poličkové grafika

Ak je na políčku jedlo, vymažeme jedlo položením prázdneho políčka a vypneme prepínač 3. V číselnej premennej políčka 1 máme uschovaný číslo jedlá zo zoznamu jedál. Prevezmeme teda číselnú hodnotu 1 políčka a použijeme ju ako index jedla, aby sme získali článok hada, ktorý k nájdenému jedlu patrí. Vezmeme zo zoznamu článok hada a položíme ho na pozíciu s Luckou. Ako vieme, Lucka zostala stáť na políčku za koncom hada, pred chvíľou sme tam predbežne položili prázdne políčko. Tým sme vytvorili nový článok hada sa spolknutým jedlom. Ešte zapneme prepínač 1 Poličkové grafika
ako príznak článku hada a zvýšime počítadlo dĺžky hada. Na záver môžeme prehrať zvuk prehltnutie a zobraziť novú dĺžku hada.

Obsluha nájdenie jedu je podobná. Vidíte ju na obrázku nižšie. Ako viete, jed označujeme prepínačom 2. Ak zistíme teda testom prepínača 2 nájdenie jedu, opäť najskôr vymažeme políčko položením prázdneho predmetu a vypneme prepínač 2. Vykonáme obsluhu podobne ako pri bežnom jedle. Nový článok hada použijeme vždy rovnaký, nezávislý na nájdenom jedu. Opäť zapneme na pozíciu Lucky prepínač 1 ako indikátor článku hada, zvýšime dĺžku hada, prehráme zvuk prehltnutie a zobrazíme novú dĺžku. Všetko zakončíme smrťou hada.

Poličkové grafika

Naším posledným úlohou bude vytvorenie funkcie pre obsluhu smrti hada. Obsah funkcie vidíte na ďalšom obrázku.

Poličkové grafika

Najskôr je uchovaná dosiahnutá dĺžka hada ako nové maximálne skóre. Po kratučké pauze sa ozve zvuk zasípění. Smrť budeme indikovať postupným prekreslením všetkých článkov hada na články s lebkou. Po prekreslenie a krátkej pauze články hada vymastíme (znázorníme tak odumieranie hada). Opäť nasleduje krátka pauza a začne sa nová hra.

Po začatí hry je dôležité doplniť príkaz vyprázdnenia zásobníka klávesov. Často sa stáva, že hráč v zápale hry stláča klávesy aj počas ukončovania hry. Tak by si mohol nechtiac odštartovať ďalšiu hru.

Nasledujúce obrázky ukazujú obsluhu prekreslenie článkov hada na smrť a vymazanie článkov hada. Opäť využívame uschované smermi na predchádzajúcu políčko v číselnej hodnote 2 políčka. Vykonávame pritom animáciu otáčanie hlavy hada (hadovi sa motá hlava), v prvom prípade proti smeru hodinových ručičiek, v druhom prípade obrátene.

Poličkové grafika

Predsa len ostáva ešte jedna posledná vec - ikonka programu, tak ako bude vyzerať pri zobrazení v zozname súborov. Vyberte ikonku hlavnú funkciu (s názvom Had) a tlačidlom Ikona ju upravte - napríklad do nej skopírujte hlavu hada. Ikona hlavné funkcie sa v systéme zobrazí ako ikona programu.

Teraz už môžete program spustiť a vyskúšať. Prajem veľa zábavy pri vašej prvej naozajstnej hry.

Poličkové grafika

 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 251x (319.84 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Petr (sú obsiahnuté v EXE súbore, ktorý možno v programe priamo otvoriť)

 

Všetky články v sekcii
Poličkové grafika
Článok pre vás napísal Panda38
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Programátor C++, WinAPI, ASM.
Aktivity