7. Ovládání klávesnicí <<< Obsah >>> 9. Jak nakrmit hada (1. část)
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 stáhnout zde -
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ň.
7. Ovládání klávesnicí <<< Obsah >>> 9. Jak nakrmit hada (1. část)