8. Petřík chodí po značkách <<< Obsah >>> 10. Ovládání klávesnicí


9. Petřík v bludišti

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í