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



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žením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 323x (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)