Samá příšera

Ostatní jazyky Petr Lite Políčková grafika Samá příšera

Zkusíme si udělat malou hru. Petřík v bludišti narazil na příšery. Ale nebojte se, až ho ozbrojíme, hravě je zvládne. Budeme pokračovat v našem programu Cesta z předešlé kapitoly, ve kterém jsme zanechali zapnutý poslední způsob ovládání - ovládání držením kláves 2.

Nejdříve zajistíme, aby se v bludišti objevovaly příšery. Zkopírujte pravým tlačítkem myši v okně Společné proměnné a funkce prvek prázdné políčko . Přejmenujte ho na Příšera a přikreslete do něj nějakou příšerku. Může vypadat třeba takto:

Příšerky se nám budou generovat náhodně. Do hlavní smyčky programu přidejte prvek podmíněné provedení příkazů . Do testu podmínky platí-li, že doplňte porovnávací funkci je menší než (ze skupiny výpočty , podskupiny porovnání ). Jako první parametr pro porovnání použijeme funkci náhodné číslo (0 <= x < 1) (ze skupiny výpočty , podskupiny funkce ). Druhým parametrem bude číselná konstanta s nastavenou hodnotou 0.2 (buď jako text u prvku nebo pomocí prvků číslic a desetinné tečky). Za chvíli doplníme obsluhu vytvoření příšery.

Co taková funkce s náhodou bude dělat? Z textů k prvkům čteme: "Platí-li, že náhodné číslo je menší než 0.2, vytvoř příšeru." Náhodné číslo je desetinné číslo s náhodnou hodnotou od nuly do jedničky. Číslo 0.2 je jedna pětina z jedničky. Náhodné číslo má hodnotu menší než 0.2 v pětině případů. To znamená, že při opakovaném průchodu se příšera vytvoří v každém pátém případě.

K vytvoření příšerky použijeme Petříkovu kamarádku - Lucku. Lucku na ploše sice nevidíme, ale je tam. Je totiž neviditelná. No a díky tomu nechodí po ploše pomalu krok za krokem, ale umí se přemisťovat rychlostí blesku. Tedy alespoň do té doby, než ji někdo neviditelnosti zbaví.

Nejdříve určíme náhodné místo, kde bude příšerka vytvořena. Do větve pro splněnou podmínku přetáhněte prvky horizontální pozice a vertikální pozice (ze skupiny Lucka , podskupiny Lucka

  • rozšíření ). Prvky slouží k
nastavení (nebo též ke zjištění) pozice Lucky na ploše. K oběma prvkům připojte funkci celočíselná část (ze skupiny výpočty , podskupiny funkce ). Souřadnice políček udáváme v celých číslech a tato funkce nám zajistí ořezání nadbytečných desetin. Bez ořezání desetin by se pozice Lucky nastavila na zaokrouhlenou hodnotu.

K funkcím celočíselné části připojte funkci náhodné číslo (0 <= x < 1) . K náhodnému číslu lze připojit jako parametr číslo, určující rozsah náhodného čísla. Například přidáním hodnoty 10 by náhodné číslo generovalo čísla v rozsahu 0 až 10. My doplníme k náhodnému číslu pro horizontální pozici prvek šířka plochy a pro vertikální pozici prvek výška plochy (oba ve skupince plocha ).

Rozeberme si podrobněji způsob výpočtu horizontální náhodné pozice. Výchozím prvkem v horizontálním směru je šířka plochy . Tento prvek navrací číslo udávající šířku plochy v krocích (v políčkách). V našem programu to bude číslo 12, což je šířka plochy, jak jsme si ji kdysi nastavili. Údaj o šířce plochy prvek předá funkci náhodné číslo (0 <= x < 1) , která vygeneruje náhodné číslo v rozsahu 0 až šířka plochy (bez koncové hodnoty), nebo-li číslo v rozsahu 0 až asi 11.99999999. Z funkce náhodného čísla je číslo předáno funkci celočíselná část . Ta ořízne část čísla za desetinnou tečkou a navrátí pouze celou část čísla. Vznikne číslo 0 až 11, což jsou souřadnice prvního až posledního políčka ve vodorovném směru. Možná jste si již všimli, že se políčka počítají z levého dolního rohu, počínaje nulou.

Máme tedy Lucku na náhodné pozici v ploše. Teď bychom mohli položit do plochy předmět příšerky, ale ještě musíme otestovat, zda je na tomto místě volné políčko, zda tam není třeba zeď. Pokud políčko nebude volné, nic se neprovede a příšerka se nevytvoří. Jak to udělat jistě už víte. A pokud ne, zde je nápověda:

Spustíte-li teď program, uvidíte stojícího Petříka, kolem kterého se pomalu ale jistě začínají houfovat příšery. Nelze se divit že zkameněl hrůzou.

Nyní trochu vylepšíme obsluhu provádění kroků Petříka. Zkopírujte pravým tlačítkem myši v okně Společné proměnné a funkce funkci Opatrný krok vpřed. Vytvoří se nová funkce s názvem Opatrný krok vpřed 2. Přejmenujte ji na Opatrný krok daným směrem.

Přepněte se dvojklikem do nově vytvořené funkce a podívejte se na pole vlevo dole. Má titulek Místní proměnné a funkce. Význam okna nás ještě chvíli nebude zajímat, pouze si všimněte prvku vstupní proměnné . Z okna Knihovna proměnných a funkcí přetáhněte do prvku novou číselnou proměnnou číslo a nazvěte ji požadovaný směr.

Přepněte se zpět do hlavní funkce programu. V konstrukci ovládání držením kláves 2 najděte první větev ovládání Petříka, obsluhu pro šipku nahoru. Položte sem nově vytvořenou funkci Opatrný krok daným směrem. Po položení funkce si můžete všimnout, že k funkci je připojena číselná proměnná s názvem požadovaný směr. Je to samozřejmě ta, kterou jsme si právě sami vytvořili. S její pomocí budeme funkci předávat parametr, kterým bude požadovaný směr kroku. Přetáhněte z příkazu pro nastavení směru do parametru funkce prvek nahoru . Zbývající příkazy - nastavení směru a funkci Opatrný krok vpřed - můžete z větve vyhodit. Stejně upravte i větve pro ostatní směry. Takto bude vypadat obsluha kroku nahoru:

Teď připravíme obsah funkce Opatrný krok daným směrem. Přepněte se do ní. Nejdříve zkušebně doplňte na začátek funkce příkaz pro nastavení směru Petříka a jako parametr doplňte vstupní proměnnou požadovaný směr. Tím jsme vlastně navrátili původní funkčnost programu, abychom ověřili, že jsme při úpravách neudělali chybu. Program spusťte a vyzkoušejte. Měl by fungovat stejně jako dřív, to znamená mělo by jít Petříka vodit. Je-li vše v pořádku, můžete příkaz pro nastavení směru opět zrušit.

Pokud bychom původní ovládání použili pro střílení na příšery, tak by nám možná mohlo vadit, že se nemůžeme otočit na cíl, aniž bychom přitom popošli o krok k cíli. Uděláme si proto malé vylepšení ovládání. Jestliže nebude Petřík otočen v požadovaném směru, nejdříve se tam otočí a až potom se rozejde. Bude tak možné Petříka krátkým ťuknutím na klávesu otočit a až držením klávesy ho rozejít vpřed. Upravte obsah funkce podle následujícího obrázku.

Na začátku funkce se nejdříve provede porovnání současného směru otočení Petříka s požadovaným směrem, předaným jako parametr funkce. Zjistíme tak, zda je Petřík v požadovaném směru již otočený.

Je-li Petřík otočený správně, může popojít o krok vpřed. Udělá to ovšem opatrným způsobem. Nejdříve otestuje, zda před ním není zeď. Není-li zeď, může popojít. Je-li zeď, zůstane stát a proběhne obsluha čekání. Hlavní smyčka programu totiž potřebuje, aby každý její průchod trval alespoň jedno čekání kvůli rovnoměrnému vytváření nových příšerek. Jedno čekání je v hlavní smyčce dosazeno v případě, že není stisknuta žádná klávesa pro pohyb. Čekání při stisku klávesy pro pohyb je obslouženo v této funkci. Nečeká se po příkazu kroku, příkaz kroku již čekání zajišťuje vnitřně. Ale můžete si zkusit prvek čekání vypnout s a vyzkoušet co se stane když narazíte do zdi

Není-li Petřík správně otočen, otočí se do požadovaného směru a program chvíli čeká. Čekání zajišťuje, aby se Petřík při krátkém ťuknutí do klávesnice nerozešel.

Spusťte program a vyzkoušejte ovládání. Především zkuste otáčení Petříka na místě a zatáčení během chůze.

Pustíme se do obsluhy střelby po příšerkách. Trochu si přitom "vystřelíme z Lucky". Použijeme totiž ke střelbě opět Petříkovu kamarádku - Lucku. Lucka bude střelou, kterou bude Petřík střílet. Ale to je v pořádku, udělá to pro něj ráda.

Dvojklikem na sprajt Lucka v okně Společné proměnné a funkce vyvolejte editaci sprajtu Lucky (poznámka: sprajtem označujeme pohyblivý animovaný objekt). Uvidíte plochu s 4 x 5 obrázky Lucky. Stiskněte tlačítko Vlastnosti . Objeví se okno pro nastavení vlastností sprajtu. Změňte řádek Fází na krok (0 = ihned) z 8 na 2 (střela poletí rychle) a řádek Fází pro pohyb změňte ze 4 na 0 (střela při letu nepotřebuje měnit vzhled). Stiskněte klávesu Enter nebo klikněte na tlačítko OK. Obrázky sprajtu se změnily tak, že Lucka je teď pouze v jednom sloupci.

Chytněte levým tlačítkem myši první z obrázků Lucky a odsuňte ho mimo plochu obrázků. Po uvolnění tlačítka myši obrázek zmizí, vyhodili jsme ho ze sprajtu pryč. Dvakrát klikněte levým tlačítkem myši na uvolněné prázdné okénko. Vyvolá se editor obrázku sprajtu. Namalujte obrázek střely - například malou šedou kuličku (nástrojem koule , použijte bílou barvu):

Jako podklad obrázku ponechejte původní našedle fialovou barvu. Je to "průhledná" barva, zajišťující viditelnost původního obsahu okna v okolí střely. Ve výběru barev grafického editoru je to barva vlevo nahoře.

Tlačítkem Předešlá editace se vraťte zpět do editoru sprajtu Lucky. Uchopte pravým tlačítkem myši upravený první obrázek a přetahováním jej rozkopírujte do všech ostatních políček sprajtu. Později můžete obrázky ještě posunout tak, aby střely vycházely přesně z místa hlavně pistole.

Teď upravený sprajt vyzkoušejte. Klikněte na tlačítko Test . Objeví se okno se zelenou plochou, uprostřed je sprajt střely. Klikněte někam do plochy okna, střela se na určené místo plynule přesune. Test sprajtu ukončíte tlačítkem Storno.

Střelu máme připravenou, nyní musíme vytvořit ovládání střely. Vraťte se do hlavní funkce programu. Do hlavní smyčky, ihned za obsluhu vygenerování nové příšery, doplňte nový prvek podmíněné provedení příkazů a nazvěte ho výstřel ze zbraně. Střelbu ze zbraně budeme aktivovat klávesou mezerníku, proto do testu podmínky platí-li, že dejte funkci je stisknuta klávesa s prvkem klávesy mezerník (ve skupině klávesy , podskupina znakové klávesy ).

Celkovou sestavu obsluhy střelby vidíte na následujícím obrázku. V obsluze nastavíme střelu (Lucku) na výchozí pozici (popíšeme si později), potom střela letí, po doletu střelu (Lucku) vypneme.

Při zahájení letu střely nastavíme pozici a směr střely podle pozice a směru Petříka, potom zapneme viditelnost střely. Prvky pozice a směru již známe, co se ale skrývá za prvkem viditelnosti? Všechny sprajty (tj. pohyblivé objekty, kterými jsou i Petřík a Lucka) mají dva základní stavy - viditelný a neviditelný. Ve viditelném stavu (kromě toho, že je sprajt vidět) se provádí animace sprajtu a sprajt se pohybuje pomalu. Je-li sprajt neviditelný, přemisťuje se na novou pozici okamžitě. Z Petříka se stává "Super Petřík", který se pohybuje jako blesk.

Viditelnost Lucky nastavíme příkazem viditelná . Jako parametr viditelnosti sprajtů obvykle uvádíme logickou konstantu ano nebo ne , tak přepínáme sprajt mezi režimy "Louda" a "Super". Celou obsluhu aktivace střely vidíte na následujícím obrázku. Pro zpřehlednění je obsluha v samostatné skupině.

Vytvoříme obsluhu pohybu střely. Za skupinu přípravy výchozí pozice střely přidejte prvek cyklu opakování příkazů s počtem , pojmenujte ho let střely. Do počtu opakování cyklu dejte číslo 4. To je maximální vzdálenost, kam střela poletí.

Let střely přerušíme, narazí-li střela do stěny. Proto dejte na začátek těla cyklu podmínku s testem, zda je před Luckou předmět Zeď . Pokud ano, přeruší se provádění cyklu příkazem přeruš opakování (je ve skupince řízení programu ). Po kontrole nárazu do zdi již můžeme dát příkaz pro pohyb střely krok .

Za posunem střely o krok otestujeme, zda střela zasáhla cíl. Použijeme podmíněný příkaz s testem, zda předmět na pozici s Luckou je předmět Příšera. Pokud ano, vymažeme příšerku položením předmětu prázdné políčko a přerušíme cyklus letu střely.

Celou obsluhu letu střely vidíte na dalším obrázku. Za obsluhou letu střely uveďte ještě vypnutí viditelnosti Lucky a program můžete vyzkoušet.

Jaká by to byla střílecí hra bez zvuků! Přidáme proto zvuky. Buď si vyberete zvuky v knihovně Petra nebo si je můžete níže - rozbalte je do složky Sound v domovské nebo pracovní složce Petra a poté přetáhněte do programu z knihovny. Zvuk pistole přidejte před skupinu příprava výchozí pozice střely. K přehrátí zvuku použijte funkci přehrátí zvuku výstřelu (najdete ji ve skupině zvuk a hudba). Zvuk zaúpění příšery přidejte na začátek podmínky zásah příšery. Chcete-li dále hru vylepšovat, můžete přikreslit Petříkovi zbraň.


 

Stáhnout

Staženo 311x (173.36 kB)
Aplikace je včetně zdrojových kódů v jazyce Petr (jsou obsaženy v EXE souboru, který lze v programu přímo otevřít)

 

  Aktivity (1)

Článek pro vás napsal Panda38
Avatar
Programátor C++, WinAPI, ASM.

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Předchozí článek
Ovládání klávesnicí
Miniatura
Všechny články v sekci
Políčková grafika
Miniatura
Následující článek
Jak na vlastní sprajty

 

 

Komentáře

Avatar
misko.lenko
Člen
Avatar
misko.lenko:

Mne sa nechce spojit Pazadovany smer s Opatrny krok danym smerom ?

 
Odpovědět 28.6.2013 22:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.