Samá príšera
Skúsime si urobiť malú hru. Petřík v bludisku narazil na príšery. Ale nebojte sa, až ho ozbrojíme, hravo je zvládne. Budeme pokračovať v našom programe Cesta z predošlej kapitoly, v ktorom sme zanechali zapnutý posledný spôsob ovládania - ovládanie držaním klávesov 2.
Najskôr zaistíme, aby sa v bludisku objavovali príšery. Skopírujte
pravým tlačidlom myši v okne Spoločné premenné a funkcie
prvok prázdne políčko
. Premenujte ho na Príšera a přikreslete doň nejakú
príšerku. Môže vyzerať napríklad takto:
Príšerky sa nám budú generovať náhodne. Do hlavnej slučky programu
pridajte prvok podmienenej vykonanie príkazov
. Do testu podmienky platia chcete, že
doplňte porovnávací funkciu je menšia než
(zo skupiny výpočty
, Podskupiny porovnanie
). Ako prvý parameter pre porovnanie použijeme funkciu náhodné
číslo (0 <= x <1)
(zo skupiny výpočty
, Podskupiny funkcie
). Druhým parametrom bude číselná konštanta
s nastavenou hodnotou 0.2 (buď ako text u prvku alebo pomocou
prvkov číslic a desatinné bodky). Za chvíľu doplníme obsluhu vytvorenie
príšery.
Čo taká funkcia s náhodou bude robiť? Z textov k prvkom čítame: "Ak platí, že náhodné číslo je menšie ako 0.2, vytvor príšeru." Náhodné číslo je desatinné číslo s náhodnou hodnotou od nuly do jednotky. Číslo 0.2 je jedna pätina z jednotky. Náhodné číslo má hodnotu menšiu než 0.2 v pätine prípadov. To znamená, že pri opakovanom prechode sa príšera vytvorí v každom piatom prípade.
K vytvoreniu príšerky použijeme Petríkov kamarátku - Lucku. Lucku na ploche síce nevidíme, ale je tam. Je totiž neviditeľná. No a vďaka tomu nechodí po ploche pomaly krok za krokom, ale vie sa premiestňovať rýchlosťou blesku. Teda aspoň do tej doby, než ju niekto neviditeľnosti zbaví.
Najskôr určíme náhodné miesto, kde bude príšerka vytvorená. Do vetvy
pre splnenú podmienku pretiahnite prvky horizontálnej
pozície
a vertikálnej pozície
(zo skupiny Lucka
, Podskupiny Lucka
- rozšírenie
). Prvky slúži k
nastavenia (alebo tiež na zistenie) pozície Lucky na ploche. K obom prvkom
pripojte funkciu celočíselná časť
(zo skupiny výpočty
, Podskupiny funkcie
). Súradnice políčok udávame v celých číslach a táto funkcia nám
zaistí orezanie nadbytočných desatín. Bez orezania desatín by sa pozícia
Lucky nastavila na zaokrúhlenú hodnotu.
K funkciám celočíselné časti pripojte funkciu náhodné číslo
(0 <= x <1)
. K náhodnému číslu možné pripojiť ako parameter číslo, určujúce
rozsah náhodného čísla. Napríklad pridaním hodnoty 10 by náhodné číslo
generovalo čísla v rozsahu 0 až 10. My doplníme k náhodnému číslu pre
horizontálne pozíciu prvok šírka plochy
a pre vertikálnu pozíciu prvok výška plochy
(obaja v skupinke plocha
).
Rozoberme si podrobnejšie spôsob výpočtu horizontálnej
náhodné pozície. Východiskovým prvkom v horizontálnom smere je
šírka plochy
. Tento prvok navracia číslo udávajúce šírku plochy v krokoch (v
políčkach). V našom programe to bude číslo 12, čo je šírka plochy, ako
sme si ju kedysi nastavili. Údaj o šírke plochy prvok odovzdá funkciu
náhodné číslo (0 <= x <1)
, Ktorá vygeneruje náhodné číslo v rozsahu 0 až šírka plochy (bez
koncovej hodnoty), alebo ak číslo v rozsahu 0 až asi 11.99999999. Z funkcie
náhodného čísla je číslo odovzdané funkciu celočíselná
časť
. Tá oreže časť čísla za desatinnou bodkou a navráti iba celú časť
čísla. Vznikne číslo 0 až 11, čo sú súradnice prvého až posledného
políčka vo vodorovnom smere. Možno ste si už všimli, že sa políčka
počítajú z ľavého dolného rohu, počínajúc nulou.
Máme teda Lucku na náhodné pozíciu v ploche. Teraz by sme mohli položiť do plochy predmet príšerky, ale ešte musíme otestovať, či je na tomto mieste voľné políčko, či tam nie je potrebné múr. Ak políčko nebude voľné, nič sa nevykoná a príšerka sa nevytvorí. Ako to urobiť iste už viete. A ak nie, tu je nápoveda:
Ak spustíte teraz program, uvidíte stojaceho Petríka, okolo ktorého sa pomaly ale isto začínajú tu oddelenia príšery. Nemožno sa čudovať že skamenel hrôzou.
Teraz trochu vylepšíme obsluhu vykonávaní krokov Petríka. Skopírujte pravým tlačidlom myši v okne Spoločné premenné a funkcie funkciu Opatrný krok vpred. Vytvorí sa nová funkcia s názvom Opatrný krok vpred 2. Premenujte ju na Opatrný krok daným smerom.
Prepnite sa dvojklikom do novovytvorenej funkcie a pozrite sa na pole vľavo
dole. Má titulok Miestne premenné a funkcie. Význam okná
nás ešte chvíľu nebude zaujímať, len si všimnite prvku vstupné
premenné
. Z okna Knižnica premenných a funkcií pretiahnite do prvku
novú číselnú premennú číslo
a nazvite ju požadovaný smer.
Prepnite sa späť do hlavnej funkcie programu. V konštrukcii
ovládanie držaním klávesov 2 nájdite prvú vetvu
ovládanie Petríka, obsluhu pre šípku nahor. Položte sem novovytvorenú
funkciu Opatrný krok daným smerom. Po položení funkcie si
môžete všimnúť, že k funkcii je pripojená číselná premenná s názvom
požadovaný smer. Je to samozrejme tá, ktorú sme si práve
sami vytvorili. S jej pomocou budeme funkciu odovzdávať parameter, ktorým
bude požadovaný smer kroku. Presuňte z príkazu pre nastavenie smeru do
parametra funkcie prvok nahor
. Zostávajúce príkazy - nastavenie smeru a funkciu Opatrný krok
vpred - môžete z vetvy vyhodiť. Rovnako upravte aj vetvy pre
ostatné smery. Takto bude vyzerať obsluha kroku nahor:
Teraz pripravíme obsah funkcie Opatrný krok daným smerom.
Prepnite sa do nej. Najskôr skúšobni doplňte na začiatok funkcie príkaz
pre nastavenie smeru Petríka
a ako parameter doplňte vstupné premennú požadovaný smer.
Tým sme vlastne vrátili pôvodnú funkčnosť programu, aby sme overili, že
sme pri úpravách neurobili chybu. Program spustite a vyskúšajte. Mal by
fungovať rovnako ako predtým, to znamená malo by ísť Petríka vodiť. Ak je
všetko v poriadku, môžete príkaz pre nastavenie smeru opäť zrušiť.
Ak by sme pôvodné ovládanie použili pre strieľanie na príšery, tak by nám možno mohlo vadiť, že sa nemôžeme otočiť na cieľ, bez toho aby sme pritom podišla o krok k cieľu. Urobíme si preto malé vylepšenia ovládanie. Ak nebude Petřík otočený v požadovanom smere, najskôr sa tam otočia a až potom sa rozíde. Bude tak možné Petríka krátkym ťuknutím na kláves otočiť a až držaním klávesy ho rozísť vpred. Upravte obsah funkcie podľa nasledujúceho obrázku.
Na začiatku funkcie sa najskôr vykoná porovnanie súčasného smere otočenie Petríka s požadovaným smerom, odovzdaným ako parameter funkcie. Zistíme tak, či je Petřík v požadovanom smere už otočený.
Ak je Petřík otočený správne, môže popojít o krok vpred. Urobí to
však opatrným spôsobom. Najskôr otestuje, či pred ním nie je múr. Ak nie
je múr, môže popojít. Ak je múr, zostane stáť a prebehne obsluha
čakania. Hlavné slučka programu totiž potrebuje, aby každý jej priechod
trval aspoň jedno čakanie kvôli rovnomernému vytváranie nových
príšeriek. Jedno čakanie je v hlavnej slučke dosadené v prípade, že nie
je stlačené žiadne tlačidlo pre pohyb. Čakanie pri stlačení klávesy pre
pohyb je obslúžených v tejto funkcii. Nečaká sa po príkaze kroku, príkaz
kroku už čakania zabezpečuje vnútorne. Ale môžete si skúsiť prvok
čakania vypnúť s
a vyskúšať čo sa stane keď narazíte do steny
Ak nie je Petřík správne otočený, otočí sa do požadovaného smeru a program chvíľu čaká. Čakanie zabezpečuje, aby sa Petřík pri krátkom ťuknutie do klávesnice nerozišiel.
Spustite program a vyskúšajte ovládanie. Predovšetkým skúste otáčanie Petríka na mieste a zatáčanie počas chôdze.
Pustíme sa do obsluhy streľby po príšerkách. Trochu si pritom "vystrelíte z Lucky". Použijeme totiž k streľbe opäť Petríkov kamarátku - Lucku. Lucka bude strelou, ktorú bude Petřík strieľať. Ale to je v poriadku, urobí to pre neho rada.
Dvojklikom na sprajt Lucka
v okne Spoločné premenné a funkcie vyvolajte editáciu
sprajt Lucky (poznámka: sprajt označujeme pohyblivý animovaný objekt).
Uvidíte plochu s 4 x 5 obrázky Lucky. Stlačte tlačidlo
Vlastnosti
. Objaví sa okno pre nastavenie vlastností sprajt. Zmeňte riadok Fáz
na krok (0 = ihneď) z 8 na 2 (strela
poletí rýchlo) a riadok Fáz pre pohyb zmeňte zo
4 na 0 (strela pri lete nepotrebuje meniť
vzhľad). Stlačte Enter alebo kliknite na tlačidlo
OK. Obrázky sprajt sa zmenili tak, že Lucka je teraz iba v
jednom stĺpci.
Chyťte ľavým tlačidlom myši prvý z obrázkov Lucky a odsuňte ho mimo
plochu obrázkov. Po uvoľnení tlačidla myši obrázok zmizne, vyhodili sme ho
zo sprajt preč. Dvakrát kliknite ľavým tlačidlom myši na uvoľnené
prázdne okienko. Vyvolá sa editor obrázku sprajt. Namaľujte obrázok strely
- napríklad malú šedú guličku (nástrojom guľa
, Použite bielu farbu):
Ako podklad obrázku ponechajte pôvodnú sivastý fialovú farbu. Je to "priehľadná" farba, zabezpečuje viditeľnosť pôvodného obsahu okna v okolí strely. Vo výbere farieb grafického editora je to farba vľavo hore.
Tlačidlom Predošlá editácia
sa vráťte späť do editora sprajt Lucky. Uchopte pravým tlačidlom myši
upravený prvý obrázok a preťahovaním ho rozkopírujte do všetkých
ostatných políčok sprajt. Neskôr môžete obrázky ešte posunúť tak, aby
strely vychádzali presne z miesta hlavne pištole.
Teraz upravený sprajt vyskúšajte. Kliknite na tlačidlo
Test
. Objaví sa okno so zelenou plochou, uprostred je sprajt strely. Kliknite
niekam do plochy okna, strela sa na určené miesto plynule presunie. Test
sprajt ukončíte tlačidlom Zrušiť.
Strelu máme pripravenú, teraz musíme vytvoriť ovládanie strely. Vráťte
sa do hlavnej funkcie programu. Do hlavnej slučky, ihneď za obsluhu
vygenerovanie novej príšery, doplňte nový prvok podmienenej
vykonanie príkazov
a nazvite ho výstrel zo zbrane. Streľbu zo zbrane budeme
aktivovať klávesom medzerníka, preto do testu podmienky platia
chcete, že
dajte funkcii je stlačená klávesa
s prvkom klávesy medzerník
(v skupine klávesy
, Podskupina znakové klávesy
).
Celkovú zostavu obsluhy streľby vidíte na nasledujúcom obrázku. V obsluhe nastavíme strelu (Lucku) na východiskovú pozíciu (popíšeme si neskôr), potom strela letí, po doletu strelu (Lucku) vypneme.
Pri začatí letu strely nastavíme pozíciu a smer strely podľa pozície a smeru Petríka, potom zapneme viditeľnosť strely. Prvky pozície a smeru už poznáme, čo sa ale skrýva za prvkom viditeľnosti? Všetky sprajt (tj. Pohyblivé objekty, ktorými sú aj Petřík a Lucka) majú dva základné stavy - viditeľný a neviditeľný. Vo viditeľnom stave (okrem toho, že je sprajt vidieť) sa vykonáva animácie sprajt a sprajt sa pohybuje pomaly. Ak je sprajt neviditeľný, premiestňuje sa na novú pozíciu okamžite. Z Petríka sa stáva "Super Petřík", ktorý sa pohybuje ako blesk.
Viditeľnosť Lucky nastavíme príkazom viditeľná
. Ako parameter viditeľnosti sprajt zvyčajne uvádzame logickú konštantu
áno
alebo nie
, Tak prepíname sprajt medzi režimami "Louda" a "Super". Celú obsluhu
aktivácia strely vidíte na nasledujúcom obrázku. Pre sprehľadnenie je
obsluha v samostatnej skupine.
Vytvoríme obsluhu pohybu strely. Za skupinu prípravy východiskovej
pozície strely pridajte prvok cyklu opakovania príkazov s
počtom
, Pomenujte ho rokov strely. Do počtu opakovaní cyklu dajte
číslo 4. To je maximálna vzdialenosť, kam strela
poletí.
Let strely prerušíme, narazí ak strela do steny. Preto dajte na začiatok
tela cyklu podmienku s testom, či je pred Luckou predmet Múr
. Ak áno, preruší sa vykonávania cyklu príkazom preruš opakovaní
(je v skupinke riadenie programu
). Po kontrole náraze do steny už môžeme dať príkaz pre pohyb strely
krok
.
Za posunom strely o krok otestujeme, či strela zasiahla cieľ. Použijeme podmienený príkaz s testom, či predmet na pozíciu s Luckou je predmet Príšera. Ak áno, vymažeme príšerku položením predmetu prázdne políčko a prerušíme cyklus letu strely.
Celú obsluhu letu strely vidíte na ďalšom obrázku. Za obsluhou letu strely uveďte ešte vypnutie viditeľnosti Lucky a program môžete vyskúšať.
Aká by to bola strieľajúcej hra bez zvukov! Pridáme preto zvuky. Buď si
vyberiete zvuky v knižnici Petra alebo si ich môžete nižšie - rozbaľte ich
do priečinka Sound v domovskej alebo pracovnej zložke Petra a
potom pretiahnite do programu z knižnice. Zvuk pištole pridajte pred skupinu
príprava východiskovej pozície strely. K prehriatiu zvuku
použite funkciu prehratie zvuku výstrelu
(nájdete ju v skupine zvuk a hudba). Zvuk zaúpění príšery
pridajte na začiatok podmienky zásah príšery. Ak chcete
ďalej hru vylepšovať, môžete prikresliť Peťkovi zbraň.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 323x (173.36 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ť)