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

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 Poličkové grafika
. Premenujte ho na Príšera a přikreslete doň nejakú príšerku. Môže vyzerať napríklad takto:

Poličkové grafika

Príšerky sa nám budú generovať náhodne. Do hlavnej slučky programu pridajte prvok podmienenej vykonanie príkazov Poličkové grafika
. Do testu podmienky platia chcete, že Poličkové grafika
doplňte porovnávací funkciu je menšia než Poličkové grafika
(zo skupiny výpočty Poličkové grafika
, Podskupiny porovnanie Poličkové grafika
). Ako prvý parameter pre porovnanie použijeme funkciu náhodné číslo (0 <= x <1) Poličkové grafika
(zo skupiny výpočty Poličkové grafika
, Podskupiny funkcie Poličkové grafika
). Druhým parametrom bude číselná konštanta Poličkové grafika
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 Poličkové grafika
a vertikálnej pozície Poličkové grafika
(zo skupiny Lucka Poličkové grafika
, Podskupiny Lucka

  • rozšírenie Poličkové grafika

    ). Prvky slúži k

nastavenia (alebo tiež na zistenie) pozície Lucky na ploche. K obom prvkom pripojte funkciu celočíselná časť Poličkové grafika
(zo skupiny výpočty Poličkové grafika
, Podskupiny funkcie Poličkové grafika
). 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) Poličkové grafika
. 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 Poličkové grafika
a pre vertikálnu pozíciu prvok výška plochy Poličkové grafika
(obaja v skupinke plocha Poličkové grafika
).

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 Poličkové grafika
. 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) Poličkové grafika
, 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ť Poličkové grafika
. 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:

Poličkové grafika

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.

Poličkové grafika

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é Poličkové grafika
. Z okna Knižnica premenných a funkcií pretiahnite do prvku novú číselnú premennú číslo Poličkové grafika
a nazvite ju požadovaný smer.

Poličkové grafika

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 Poličkové grafika
. 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:

Poličkové grafika

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 Poličkové grafika
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.

Poličkové grafika

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 Poličkové grafika
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 Poličkové grafika
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 Poličkové grafika
. 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 Poličkové grafika
, Použite bielu farbu):

Poličkové grafika

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 Poličkové grafika
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 Poličkové grafika
. 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 Poličkové grafika
a nazvite ho výstrel zo zbrane. Streľbu zo zbrane budeme aktivovať klávesom medzerníka, preto do testu podmienky platia chcete, že Poličkové grafika
dajte funkcii je stlačená klávesa Poličkové grafika
s prvkom klávesy medzerník Poličkové grafika
(v skupine klávesy Poličkové grafika
, Podskupina znakové klávesy Poličkové grafika
).

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.

Poličkové grafika

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á Poličkové grafika
. Ako parameter viditeľnosti sprajt zvyčajne uvádzame logickú konštantu áno Poličkové grafika
alebo nie Poličkové grafika
, 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.

Poličkové grafika

Vytvoríme obsluhu pohybu strely. Za skupinu prípravy východiskovej pozície strely pridajte prvok cyklu opakovania príkazov s počtom Poličkové grafika
, 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 Poličkové grafika
. Ak áno, preruší sa vykonávania cyklu príkazom preruš opakovaní Poličkové grafika
(je v skupinke riadenie programu Poličkové grafika
). Po kontrole náraze do steny už môžeme dať príkaz pre pohyb strely krok Poličkové grafika
.

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ť.

Poličkové grafika

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 Poličkové grafika
(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ň.

Poličkové grafika
Poličkové grafika

 

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ť)

 

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