8. Petřík chodí po značkách <<< Obsah >>> 10. Ovládání klávesnicí
Petřík na svých toulkách přišel do velkého bludiště. Nemůže najít cestu ven, musíme mu pomoci.
Začneme vytvořením nového programu.
V okně programů stiskněte tlačítko Nový , jako
jméno programu zadejte Cesta.
V okně Společné proměnné a funkce připravíme dva předměty pro bludiště -
zeď a dveře. Mohli bychom si je namalovat, ale raději
použijeme předměty již připravené v knihovně předmětů.
Knihovna se nachází v okně vpravo dole, okno nese nadpis Knihovna proměnných a
funkcí. Vidíme v něm
datové prvky jako je číslo, předmět, obrázek. Rozviňte
prvek předmět a ve skupince [vzory], podskupince Domek, najděte prvky Dveře a Zeď
.
Přetáhněte je do okna Společné proměnné a funkce. Tak jsme snadno a rychle vytvořili dva nové
předměty už pojmenované a nakreslené.
Teď vytvoříme plochu bludiště.
Dvakrát klikněte na prvek plocha .
Trochu si ji zmenšíme, ať nemusíme dělat příliš velké
bludiště. Klikněte na tlačítko Rozměry
.
Objeví se okno pro zadání rozměrů plochy. Zadejte šířku
plochy 12 a výšku 10
kroků.
Použijte předměty Dveře a Zeď a vytvořte bludiště podle obrázku:
Základem programu bude cyklus podmíněné opakování
příkazů . Chceme totiž, aby
Petřík neustále opakoval své kroky po bludišti až do
okamžiku, kdy najde dveře. V podmínce cyklu použijeme prvek předmět na pozici s
Petříkem
. Je podobný prvku předmět před
Petříkem s tím
rozdílem, že se vztahuje k předmětu na políčku, na kterém
stojí Petřík. Najdete ho v podskupince Petřík - rozšíření
.
Podmínku cyklu bychom mohli slovně
vyjádřit: "Dokud není na
pozici s Petříkem předmět dveří, opakuj...".
Slovo není nám dává najevo, že potřebujeme
opak testu na shodnost předmětů. K tomuto účelu je určen
prvek neplatí-li,
že . Prvku se říká logická negace a funguje tak, že převrátí výsledek
porovnávací operace z ano
na ne a z ne na ano. Najdeme ho ve skupince výpočty
,
podskupince logické
operace
.
Nejdříve tedy umístíme do podmínky
cyklu dokud
platí prvek neplatí-li, že
.
K němu připojíme prvek shodnost předmětů
a do něj vložíme prvky předmět na pozici s Petříkem
a Dveře
.
V těle cyklu chceme zajistit, aby
Petřík procházel bludiště tak, že se bude neustále držet
stěny po pravé straně. Na začátku cyklu necháme Petříka
otočit vpravo příkazem vpravo .
Dalším příkazem bude cyklus podmíněné opakování příkazů
.
Ten zajistí otáčení Petříka doleva, dokud před sebou
nenajde průchodné políčko. Jako příkaz do cyklu proto
umístíme prvek vlevo
.
V podmínce druhého (vnitřního) cyklu
budeme testovat, zda je před Petříkem neprůchodné políčko
a zda se tedy má Petřík ještě pootočit doleva. Prvním z
neprůchodných políček bude Zeď
. Petřík nemůže
projít ještě přes jednu překážku, a to přes okraj plochy
okna. Okraj plochy okna můžeme testovat jedním zvláštním
předmětem - okraj
plochy
(je ve skupince plocha
).
Zvláštní je v tom, že to není datová proměnná, ale
konstanta, protože její obsah nemůžeme měnit. Její hodnotu
lze uchovávat v proměnných a testovat, ale nelze ji zobrazit
položením na plochu.
Máme tedy dva testy předmětů před
Petříkem a potřebujeme vyjádřit formulaci "Dokud je
před Petříkem Zeď nebo je před
Petříkem okraj plochy, opakuj vlevo". Slovo nebo
je opět logický prvek - nebo
, říkáme mu logický součet. Najdeme ho ve skupince výpočty
,
podskupince logické
operace
. Vložíme prvek nebo do podmínky cyklu a přidáme dvě porovnání
předmětů před Petříkem, se zdí a s okrajem.
Petřík je teď otočen směrem na
volné políčko, takže nám zbývá doplnit poslední prvek do
hlavního cyklu - krok .
Prvek zajistí popojítí Petříka vpřed na volné políčko.
Nakonec zajistíme, aby se Petřík po
nalezení cíle na nás otočil a čekal na stisk klávesy. Za
hlavní cyklus doplníme prvky vlevo
a vstup
klávesy (čeká na stisk)
. Výsledný program
vidíte zde:
Program spusťte. Petřík probíhá celé bludiště, až nakonec dorazí k východu. Schválně jsme mu dali východ hned za roh po levé straně, ale protože to neví, snaží se najít východ vpravo a tak mu to dlouho trvá.
Prohoďme mezi sebou prvky vlevo
a vpravo
.
Tím jsme změnili metodu hledání východu tak, že se Petřík
bude držet levé stěny namísto pravé. V našem bludišti
najde východ mnohem dříve.
8. Petřík chodí po značkách <<< Obsah >>> 10. Ovládání klávesnicí