https://scratch.mit.eduZde najdete Scratch

Lekce – podmínky a práce s klávesnicí

V této lekci se podíváme na podmínky. Podmínky používáme tehdy, pokud chceme, aby se část programu vykonala jen tehdy, pokud platí nějaká podmínka. Také se naučíme pracovat s klávesnicí, abychom naše projekty mohli ovládat.

Co budeme dělat?

V lekci budeme vytvářet tuto jednoduchou hru, na které si vše budeme ukazovat.

Ve hře ovládáte brouka. Brouk leze sám pořád směrem dopředu, zatáčet můžete pomocí šipek na klávesnici (doprava a doleva). Cílem brouka je sníst všechny melouny (dotknout se jich). Červenou překážkou brouk neproleze.

A teď jak na to. Nejprve trochu teorie.

Posuň se směrem

Již umíme posouvat postavu pomocí příkazů ZMĚŇ X O – a ZMĚŇ Y O -. Tyto příkazy se hodí, když potřebujeme měnit jen Xovou nebo jen Ynovou souřadnici, tedy šoupat postavou vodorovně nebo svisle. Brouk v naší hře ale běhá všemi směry. K tomu využijeme příkaz POSUŇ SE O – KROKŮ. Tento příkaz posune postavu o daný počet kroků (bodů) ve směru, kterým je postava právě natočena.  Více o směru postavy se dočtete v článku Postavy.

Pokud je postava natočena směrem doprava (90 stupňů) je příkaz POSUŇ SE O 10 KROKŮ shodný s příkazem ZMĚŇ X O 10, tedy změní jen Xovou souřadnici. Pokud je ale postava natočena např. ve směru 45 stupňů, posune se postava šikmo a změní Xovou i Ynovou souřadnici.

No a směr postavy nastavujeme příkazem NATOČ SE SMĚREM –  a oproti stávajícímu stavu ho můžeme měnit příkazy OTOČ SE DOPRAVA O – STUPŇŮ a OTOČ SE DOLEVA O – STUPŇŮ. Pokud tedy chceme brouka pootočit o kousek doleva, použijeme příkaz OTOČ SE DOLEVA O 10 STUPŇŮ.smery

Vstup z klávesnice – Událost

Založíme si nový projekt, do projektu přidáme postavu brouka a broukovi napíšeme takovýto scénář.lekce_podminky1

První části (Po kliknutí na vlajku) bychom už měli rozumět. Nejprve máme počáteční inicializaci, brouka dáme do středu, natočíme ho směrem doprava a zmenšíme ho na polovinu. Pak následuje cyklus, ve kterém se brouk pohybuje, a to ve směru, jakým je právě natočen.

A pak tu máme dvě nové části. Jsou to samostatné kusy programu, které řeší právě vstup z klávesnice. Máme zde nový příkaz PO STISKU KLÁVESY – . Tato část kódu se spustí právě tehdy, když je stisknuta zvolená klávesa. V našem případě se pouze brouk pootočí doleva či doprava a program skončí. Pokud klávesu držíme, bude se tato část kódu volat znovu a znovu, brouk se bude točit dokola.

Všimněte si, že jednotlivé části scénáře vždy musí začínat nějakou Událostí. Jakmile daná událost nastane, spustí se příslušný kód. Již známe tyto události:

Příkazy nenapojené na událost se nikdy nespustí.

Když nyní program spustíme, můžeme již brouka řídit pomocí směrových šipek.

Všimněte si, že ovládání z klávesnice není příliš plynulé. Událost PO STISKU KLÁVESY – se totiž spíše hodí, pokud potřebujeme ošetřit jednotlivé stisky. Pro souvislé držení klávesy se hodí jiný způsob, který si představíme dále.

Podmínky

Nyní si přestavíme příkaz KDYŽ – TAK. Pomocí příkazu  KDYŽ-TAK říkáme programu, že se mají bloky uvnitř příkazu vykonat jen tehdy, když platí zadaná PODMÍNKA. A co je to ta podmínka. Podmínka je jakákoliv otázka, na kterou program odpoví ANO nebo NE. Pokud odpoví ANO, je podmínka splněna (např. „je X>0 ?“ nebo „je klávesa mezerník stisknuta ?“. Určitě si přečtěte článek o Podmínkách.

Když je klávesa stisknuta

Nejlépe to pochopíme v praxi. Upravíme program tak, aby ovládání z klávesnice bylo plynulejší. Odstraníme ovládání z klávesnice, inicializaci programu necháme stejnou, ale upravíme hlavní cyklus programu takto:lekce_podminky2

Všimněte si

  • V prvním bodě cyklu zůstal příkaz pro posun daným směrem
  • Přidali jsme dvě jednoduché podmínky KDYŽ je klávesa – stisknut TAK. Pokud je tato podmínka splněna, tedy klávesa je stisknuta, dojde ke změně směru podobně, jako jsme to řešili pomocí událostí v předchozím odstavci.

Když nyní program pustíte, bude ovládání mnohem plynulejší.  Scratch nyní nečeká na vyvolání události, ale jen se plynule zeptá, zda je nebo není klávesa stisknuta, což je mnohem rychlejší.

Když se dotýká barvy

Nyní si přidáme další podmínku. Naučíme brouka, že nesmí vlézt na červenou překážku. K tomu si nejprve připravíme překážky. To nebudou postavy, ale namalujeme je jednoduše na pozadí Scény. Přepněte se do scény, vyberte záložku pozadí a pomocí Nástroje pro malování na něj namalujte barevné překážky.

A když máme barevné pozadí, přidáme do hlavního cyklu následující podmínku. lekce_podminky3

Když podmínka zjistí, že brouk leží na červené barvě, odsune ho jednoduše zpět (o -5 kroků). Brouk se tedy v tomto případě vůbec nepohne. Pozor, podmínku musíte dát hned za příkaz POSUŇ SE O 5 KROKŮ.

Barvu v podmínce DOTÝKÁ SE BARVY – ? nastavíme tak, že klikneme do pole barevného parametru, kurzor se změní na ruku a touto rukou klikneme na libovolnou barvu na obrazovce, kterou chceme použít.

Brouk by měl nyní plynule rejdit po obrazovce, nedokáže ale vlézt na červené překážky.

Přidáme meloun

Nyní přidáme postavu melounu. Zatím jen jeden. A napíšeme jí takovýto scénář.lekce_podminky4

Ve scénáři vidíme nový příkaz, který také využívá podmínky. Jde o příkaz ČEKEJ DOKU NENASTANE – . Tento příkaz zastaví scénář, ten čeká, a dále pokračuje až tehdy, když začne platit zadaná podmínka.

A také zde máme novou podmínku, DOTÝKÁ SE _? Zde konkrétně se postava (Meloun) ptá, zda se dotýká se Brouka?

Co tedy skript dělá? Na začátku zobrazí meloun (kdyby byl náhodou předtím skrytý). Pak čeká a nic nedělá, dokud se meloun nedotýká brouka. Jakmile to nastane, přehraje zvuk (mńouknutí – jiný zatím nemáme) a meloun skryje.

Zkopírujeme další melouny

Nyní už jen zbývá vytvořit další melouny. To tentokrát uděláme ručně (později se naučíme, jak to dělat z programu pomocí klonování). Abychom nemuseli vše psát znovu, využijeme Kopírování postavy a Meloun 3x zkopírujeme a každý umístíme na jiné místo ve scéně.

Závěr

A máme hotovo. Na projekt se můžeme podívat zde https://scratch.mit.edu/projects/122683809 .

Ověřte si své znalosti na tomto cvičení.bludiste

Přehled základních lekcí:

Share This