Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Ovládanie klávesnicou

Zostaneme ešte pri programe Cesta z minulej kapitoly. Program upravíme tak, aby sme Petríka v bludisku ovládali klávesnicou namiesto aby hľadal cestu sám. Budeme skúšať viac metód ovládanie, necháme si ich všetky v programe uschované pre možnosť porovnania. Uschováme si aj metódu, v ktorej Petřík hľadá východ sám.

Pretiahnite do hlavného cyklu programu zo skupinky ** ** riadenie programu Poličkové grafika
prvok skupina Poličkové grafika
. Prvok skupina nič nerobí, slúži len ku zhluknutie úseku programu do jedného miesta. Premiestnite do neho všetky príkazy, ktoré sú teraz v hlavnom cykle: prvok otočenie vpravo, cyklus pre nájdenie priechodného políčka a príkaz na vykonanie kroku (zachovajte pôvodné poradie prvkov). Skupinu sklopte a pripíšte k nej poznámku Petřík ide sám. Tým sme si metódu automatického vyhľadania východu uschovali do jednej skupiny, aby sa nám "neplietla dokopy" s ostatnými metódami, ktoré budeme vytvárať. Skúste program pre kontrolu spustiť. Mal by fungovať rovnako ako pred úpravou.

Skupinu vyberte kliknutím myšou na jej ikonku. Na paneli s nástrojmi zapnite tlačidlo Vypnúť Poličkové grafika
. Skupina aj všetky prvky v nej zošednú. Táto funkcia nám umožňuje vypínať časti programu ak ich práve v programe nepotrebujeme. Keď program spustíte, uvidíte, že Petřík iba stojí v ľavom dolnom rohu a nič sa nedeje. Program sa správa tak, akoby tam skupina s príkazmi vôbec nebola.

Našu novú časť programu budeme konštruovať vnútri hlavného cyklu programu, hneď pod predchádzajúce skupinou. Využijeme nový konštrukčný prvok

  • viacstupňové

vetvenia príkazov Poličkové grafika
(Medzi programátormi niekedy označovaný ako "hrable"). Nájdete ho v skupinke riadenie programu Poličkové grafika
. Položte ho do hlavnej slučky pod skupinu Petřík ide sám.

Viacstupňové vetvenia príkazov slúži k vetvenie programu na viac častí v závislosti od hodnoty premennej či výrazu. Obvyklým použitím je vetvenie podľa číselné hodnoty. Neskôr budeme vetvenia používať aj pre iné typy dát, ako napríklad texty.

Prvok vetvenia obsahuje ďalšie štyri prvky. Do prvého prvku, pre hodnotu výrazu Poličkové grafika
, Vkladáme premennú či výraz, podľa ktorého sa má vetvenia vykonať. My sem umiestnime prvok vstup klávesy (čaká na stlačenie) Poličkové grafika
, Ktorý bude vetviaci konštrukciu odovzdávať číselný kód stlačené klávesy.

Nasledujú dva spojené prvky - urob príkazy v prípade, že Poličkové grafika
a výraz je rovný hodnote Poličkové grafika
. Jedná sa o jednu vetvu vetviaci konštrukcie. Do prvku výraz je rovný hodnote umiestňujeme hodnotu, pre ktorú budú príkazy vo vetve vykonané. Vetví môže byť ľubovoľné množstvo, rovnako tak testovaných hodnôt vo vetve môže byť ľubovoľne. Celú vetva urob príkazy v prípade, že Poličkové grafika
skopírujte ešte trikrát.

Máme teraz štyri vetvy vetviaci konštrukcie. Do testované hodnoty Poličkové grafika
v prvej vetve dáme zo skupinky ovládanie Poličkové grafika
, klávesnica Poličkové grafika
, klávesy Poličkové grafika
, Riadiace klávesy Poličkové grafika
kód klávesy hore Poličkové grafika
. Táto vetva sa vykoná pri stlačení klávesy nahor. Do príkazov vetvy Poličkové grafika
dáme príkaz pre krok. Budeme strážiť, aby Petřík neprechádzal cez stenu. Okraj plochy strážiť nemusíme, Petřík von z plochy neutečie. Namiesto jednoduchého kroku použijeme podmienený príkaz. Do testu podmienky dáme nákupný predmetov či je pred Petrik múr. Ak áno Poličkové grafika
, Nebude sa diať nič. Ak nie Poličkové grafika
, Petřík urobí krok.

Do ďalších troch vetiev uvedieme postupne ako testované hodnoty klávesy vľavo Poličkové grafika
, vpravo Poličkové grafika
a dole Poličkové grafika
a ako príkazy prvky vľavo Poličkové grafika
, vpravo Poličkové grafika
a vzad Poličkové grafika
.

Posledným prvkom vetviaci konštrukcia je prvok inak vykonaj príkazy Poličkové grafika
. Ako napovedá názov, príkazy v tejto časti konštrukcie sa vykonajú vtedy, keď testovaná hodnota nebude nájdená ani v jednej z vetiev. V našom prípade tu nebude nič.

Poličkové grafika

Spustite program. Petřík stojí v ľavom dolnom rohu. Vyskúšate Ak kurzorové klávesy (šípky), zistíte, že sa Petřík otáča vľavo, vpravo, vzad a robí krok vpred. Môžete Petríka vodiť bludiskom. Až dorazíte k východu, Petřík sa otočí na vás a po stlačení ďalšej klávesy program skončí.

Použitý spôsob ovládania je ovládanie typické pre autá. Používame ho v prípadoch, keď potrebujeme pohybovaným objektom presne otáčať do požadovaného smeru, ale nie je tak dôležitá rýchlosť pohybu po ploche (manipulovateľnos­ť).

V prípadoch, kedy je potrebné sa rýchlo a ľahko premiestňovať, použijeme nasledujúce spôsob ovládania. Riadime v ňom nie otáčaní postavy, ale popochádzanie v smere šípky.

Skopírujte pravým tlačidlom myši predošlú vetviaci konštrukciu ešte raz nižšie. Pôvodný konštrukciu vypnite tlačidlom Vypnúť Poličkové grafika
. Novú konštrukciu nazvite ovládanie Petríka smermi. Z konárov vyhoďte príkazy pre otáčanie vľavo, vpravo a vzad.

Prvá vetva vetviaci konštrukcie (pre šípku hore) upravíme tak, aby sa Petřík otočil hore a urobil krok. Krok máme už pripravený - kontroluje sa v ňom, či pred Petrík nie je múr. Smer otočenie Petríka nastavíme pomocou prvku smer Poličkové grafika
. Nájdete ho v rozšírených funkciách Petríka. Prvok vložte pred podmienku na vykonanie kroku Petríka. Ako parameter pripojte prvok nahor (1/2 pi, tj. 90 stupňov) Poličkové grafika
, Je v skupinke výpočty Poličkové grafika
, Podskupince uhol, smer Poličkové grafika
. Je to číselná konštanta majúce hodnotu pi / 2, pretože uhly sa v Petrovi meria v radiánoch.

Vytvorte príkazy pre nastavenie smeru aj v ostatných vetvách vetviaci konštrukcie, smery zmeňte zodpovedajúcim spôsobom podľa smerov klávesov. Príkaz pre opatrné vykonaní kroku by sme mohli skopírovať z prvej vetvy, ale ako už sme si povedali skôr, rozkopírovanie kódu je neprogramátorské. Radšej použijeme funkciu.

Čo je funkcia? Funkcia je prvok, ktorý obsahuje časť programu. Namiesto viacnásobného výskytu zhodné časti programu použijeme viackrát funkciu, ktorá potrebnú časť programu vykoná. Program sa sprehľadní a budú sa nám ľahšie vykonávať zmeny.

Novú funkciu vytvoríme pretiahnutím prvku funkcie Poličkové grafika
z poľa Knižnica premenných a funkcií do poľa Spoločné premenné a funkcie. Funkciu pomenujte Opatrný krok vpred. Keď dvakrát kliknete na ikonku funkcie, objaví sa prázdne editačné okno. Funkcia zatiaľ neobsahuje žiadne príkazy.

Mohli by sme teraz vo funkcii vytvoriť príkaz pre krok, ale my si to uľahčíme, pretože máme tento príkaz už v programe vytvorený. Prepnite sa späť do hlavnej funkcie programu (tlačidlom Predošlá editácia Poličkové grafika
) A nájdite podmienený príkaz s testom múru a krokom vpred (je vo vetve pre šípku hore). Kliknutím na ikonku podmienený príkaz označte. Kliknite na tlačidlo Kópia Poličkové grafika
(alebo na klávesnici stlačte Ctrl + C). Označený prvok programu (vrátane pripojených prvkov) sa uschová do schránky na prenášanie dát.

Vráťte sa do funkcie Opatrný krok vpred (tlačidlom Nasledujúce editácia Poličkové grafika
). Kliknite na tlačidlo Vložiť Poličkové grafika
(alebo stlačte Ctrl + V). V okne sa objaví prenášaná časť programu.

Poličkové grafika

Teraz už môžeme z vetvy pre šípku hore podmienený príkaz vyhodiť a nahradiť ho funkcií pre opatrný krok. Doplníme ju aj do ostatných vetiev za objednávok nastavenie smeru.

Poličkové grafika

Program môžete spustiť a vyskúšať. Ako vidíte, Petřík teraz podíde o krok v smere stlačené klávesy šípky.

Do tretice všetko dobré si vyskúšame ešte jednu metódu ovládania, ktorú budeme používať u zložitejších a dokonalejších hier. Možno ste si všimli, že držíte-li u predošlých dvoch metód chvíľu kláves, Petřík sa pohybuje aj potom, čo ste už kláves dávno pustili. Príčinou je rýchlejšie generovanie kódov držaných klávesov, než je schopný Petřík popocházať, a tak sa klávesy uchovávajú v zásobníku klávesov. Istým riešením je príkaz vyprázdnenie zásobníka klávesov Poličkové grafika
, Ktorý zruší klávesy uchované v zásobníku klávesov. Použijeme ho vždy na začiatku každej obsluhy platného znaku z klávesnice pred vykonaním kroku Petríka.

Ďalšie necnosti, ktorá nám môže u predošlých dvoch metód ovládania vadiť, sa prejavuje pri ovládaní rýchlych dejov alebo pri jemnom grafickom ovládaní. Skúste si v nastavení sprajt Petríka zmeniť počet fáz na krok na 1 (po skúške vráťte späť na 8). Petřík bude rýchlo preskakovať po políčkach. Keď na dlhšom voľnom úseku kláves chvíľu podržíte, Petřík poskočí najskôr o políčko, chvíľu čaká a až potom začne rýchlo preskakovať na ďalšie políčka. Príčinou tohto javu je spôsob generovania znakov klávesnicou - oneskorenie po prvej tlačidlu a potom opakovanie. Pri písaní textov je táto vlastnosť užitočná, ale pri hraní hier nám môže trochu vadiť.

Náš požiadavka na ovládanie klávesnicou je, aby sa Petřík pohyboval vždy, keď držíme kláves. Bez úvodných prieťahov a bez zotrvačnosti po uvoľnení klávesy. K tomuto účelu slúži funkcia je stlačená klávesa Poličkové grafika
zo skupinky klávesnice Poličkové grafika
. Funkcia otestuje požadovanú kláves, či ju užívateľ drží, a navráti príznak áno / nie.

Najskôr opäť vypnite predošlú metódu tlačidlom Vypnúť Poličkové grafika
. Pod ňu pripravte prvok podmienenej vykonanie príkazov Poličkové grafika
. Môžete ho nazvať treba ovládanie držaním kláves. Do testu podmienky platia chcete, že Poličkové grafika
vložte prvok je stlačená klávesa Poličkové grafika
, Ako parameter k nemu pripojte kláves hore Poličkové grafika
. Do vetvy platnosti podmienky potom vykonaj Poličkové grafika
vložte príkazy pre popojítí hore, tak ako u predchádzajúceho typu ovládania. Konštrukciu teraz čítame: "Ak je držaná klávesa hore, potom sa otoč hore a opatrne podíde o krok, inak pokračuj testom ďalších klávesov."

Vo vetve neplatnosti podmienky inak vykonaj Poličkové grafika
vytvorte rovnakú konštrukciu znovu, tentoraz ale pre smer vľavo. V jej vetve neplatnosti podmienky vytvorte obsluhu smeru vpravo a nakoniec vytvorte obsluhu smeru nadol. Do vetvy neplatnosti podmienky v obsluhe smere nadol (teda úplne posledný vetva) vložte príkaz čakania (bez zadania = 0.05 s) Poličkové grafika
, Nájdete ho v skupinke riadenie programu Poličkové grafika
. Značka malého rovná sa Poličkové grafika
pred ikonkou čakanie indikuje nepovinnost parametra príkazu, žiadny parameter nemusíme dopĺňať, použije sa implicitná hodnota 0,05 sekundy.

Prečo príkaz čakanie? Operačný systém Windows je viacúlohový. To znamená, že súčasne môže byť v chode viacerých programov. Každý program by mal zabezpečiť, aby zbytočne nespotreboval výkon počítača, keď to nutne nepotrebuje. Známkou dobrého programátora je slušné správanie jeho programov v prostredí, v ktorom pobeží. Keď by používateľ žiadnu kláves nestlačil, slučka programu by išla neustále dookola veľkou rýchlosťou. Program by sa tváril ako nečinný, ale pritom by išiel na plné obrátky. Tí skúsenejší si môžu spustiť systémový program Sledovanie systému a sledovať zaťaženie procesora. Program neberoucí ohľad na svoje okolie zaberá takmer celý výkon počítača a počítač sa tak stáva ťažko ovládateľný.

Na obrázku vidíte hotovú obsluhu ovládania Petríka. Časti pre obsluhu kroku v danom smere sú Sklopenie, poznáme je už z predošlého ovládania.

Poličkové grafika

Nevýhodou takéhoto dlhého reťazca podmienok je, že môže byť na prvý pohľad neprehľadný. Ukážeme si ešte inú možnosť stavby podobné konštrukcie, aj keď treba povedať že menej používanou a svojím spôsobom neobvyklú (bežné programovacie jazyky neumožňujú viacnásobné vetvenie podľa iných typov dát než číselné konštanty).

Vypnite našu poslednú variantu tlačidlom Vypnúť Poličkové grafika
. Skopírujte si znovu variantu ovládanie Petríka smermi a premenujte ju na ovládanie držaním klávesov 2. Podmienkové konštrukcia pracovala tak, že sa uskutočnila práve jedna z vetiev v závislosti na stlačené klávese. Z prvku pre hodnotu výrazu Poličkové grafika
zrušte funkciu vstupu z klávesnice a nahraďte ju prvkom áno Poličkové grafika
(zo skupinky výpočty Poličkové grafika
, Logické operácie Poličkové grafika
).

V testovaných hodnotách jednotlivých vetiev postupne nahraďte kódy klávesov kombináciami prvku je stlačená klávesa Poličkové grafika
a kódu klávesy. Postupujte nasledovne: Kliknutím myšou na ikonu kódu klávesy prvok kódu klávesy vyberte. Stlačením tlačidla Vystrihnúť Poličkové grafika
(alebo z klávesnice Ctrl + X) presuňte prvok kódu klávesy do schránky. Na jeho pôvodné miesto vložte prvok je stlačená klávesa Poličkové grafika
. Vyberte ho myšou a stlačte tlačidlo Vložiť Poličkové grafika
(alebo z klávesnice Ctrl + V). Kód klávesy sa pripojí k testu stlačenia klávesy. Záverom doplňte do prvku inak vykonaj príkazy Poličkové grafika
prvok čakania (bez zadania = 0.05 s) Poličkové grafika
, Inak by program vo voľných chvíľach záťažou pre chod počítača.

Hotovú konštrukciu vidíte na ďalšom obrázku (pre prehľadnosť sú príkazy pre pohyb Sklopenie v skupinách). Ako funguje? Program pri svojom chode na začiatku zistí, že vo vetvách bude testovaná logická hodnota platnosti. Prechádza jednotlivé vetvy a hľadá rovnakú hodnotu, teda platnú podmienku. Príkazy v nájdenej vetve vykoná a pokračuje až za celú konštrukciou viacstupňového vetvenia príkazov, ďalších prípadných splnených podmienok a konárov si už nevšíma. Inak povedané, vykoná sa prvý (a jediná) vetva sa splnenú podmienkou (stlačeným klávesom), inak sa vykoná až posledná z príkazov - čakanie.

Poličkové grafika
Poličkové grafika

 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 404x (130.28 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