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
prvok skupina
. 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úť
. 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
(Medzi programátormi niekedy označovaný ako "hrable"). Nájdete ho v skupinke
riadenie programu
. 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
, 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)
, 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
a výraz je rovný hodnote
. 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
skopírujte ešte trikrát.
Máme teraz štyri vetvy vetviaci konštrukcie. Do testované hodnoty
v prvej vetve dáme zo skupinky ovládanie
, klávesnica
, klávesy
, Riadiace klávesy
kód klávesy hore
. Táto vetva sa vykoná pri stlačení klávesy nahor. Do príkazov vetvy
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
, Nebude sa diať nič. Ak nie
, Petřík urobí krok.
Do ďalších troch vetiev uvedieme postupne ako testované hodnoty klávesy
vľavo
, vpravo
a dole
a ako príkazy prvky vľavo
, vpravo
a vzad
.
Posledným prvkom vetviaci konštrukcia je prvok inak vykonaj
príkazy
. 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č.
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úť
. 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
. 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)
, Je v skupinke výpočty
, Podskupince uhol, smer
. 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
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
) 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
(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
). Kliknite na tlačidlo Vložiť
(alebo stlačte Ctrl + V). V okne sa objaví prenášaná
časť programu.
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.
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
, 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 . 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
zo skupinky klávesnice
. 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úť
. Pod ňu pripravte prvok podmienenej vykonanie príkazov
. Môžete ho nazvať treba ovládanie držaním kláves. Do
testu podmienky platia chcete, že
vložte prvok je stlačená klávesa
, Ako parameter k nemu pripojte kláves hore
. Do vetvy platnosti podmienky potom vykonaj
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
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)
, Nájdete ho v skupinke riadenie programu
. Značka malého rovná sa
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.
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úť
. 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
zrušte funkciu vstupu z klávesnice a nahraďte ju prvkom áno
(zo skupinky výpočty
, Logické operácie
).
V testovaných hodnotách jednotlivých vetiev postupne nahraďte kódy
klávesov kombináciami prvku je stlačená klávesa
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úť
(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
. Vyberte ho myšou a stlačte tlačidlo Vložiť
(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
prvok čakania (bez zadania = 0.05 s)
, 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.
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ť)