Lekce – události a zprávy
|V této lekci si blíže vysvětlíme události a hlavně se naučíme vytvářet a používat zprávy k vytváření vlastních událostí.
Co jsou to události
O událostech jsme již trochu mluvili. Každý scénář musí vždy začínat nějakou událostí. Jedná se například o událost PO KLIKNUTÍ NA VLAJKU, nebo PO STISKu KLÁVESY – a další.
Scratch má několik připravených příkazů pro události, najdete je v hnědé sekci Události. Všimněte si, že příkaz pro událost má nahoře velký oblouček a není možné před něj připojit žádný jiný příkaz – událostí scénář vždy začíná.
Naopak za událost se vždy připojuje jeden či více příkazů, které se začnou vykonávat právě ve chvíli, kdy daná událost v programu nastane (když se program spustí kliknutím na vlajku, když někdo zmáčkne příslušnou klávesu). Příkazy po události buď proběhnou a scénář události skončí, jako například zde:
nebo mohou běžet donekonečna (tj. dokud program neskončí), pokud po události následuje nějaký nekonečný cyklus. Například zde:
Souběžné zpracování několika scénářů
Je nutné si uvědomit, že díky událostem je možné (a poměrně obvyklé), že v jednom programu běží několik scénářů zároveň (nebo též se říká paralelně). A to dokonce i v rámci jedné postavy. Například v našem příkladu pro lekci Cykly a animace, kde netopýr létá ze strany na stranu a mává křídly, najdeme přímo u netopýra 2 paraelní scénaře. Oba začnou ihned po spuštění programu (na událost PO KLIKNUTÍ NA VLAJKU). První scénář zajišťuje pohyb netopýra tam a zpět a druhý zajišťuje změnu kostýmů (mávání křídly). Podívat se můžete zde https://scratch.mit.edu/projects/122248714.
Vlastní události – zprávy
Scratch umožňuje vytváření vlastních událostí, takzvaných Zpráv. Princip je velmi jednoduchý. Jakýkoliv scénář může pomocí příkazu ROZEŠLI VŠEM poslat libovolnou zprávu. A jiný scénář v jiné či té samé postavě může na tuto zprávu reagovat, pomocí události PO OBDRŽENÍ ZPRÁVY –. Nejlépe pochopíme na příkladu.
Spusťte příklad a klikněte na tlačítko kotrmelec. A tučňák udělá kotrmelec – jednoduché. Scénář tlačítka vypadá takto:
Tedy poté, co dojde k události kliknutí na tlačítko, rozešle toto vlastní zprávu Kotrmelec. No a v tučňákovi je tento skript:
Skript začíná událostí PO OBDRŽENÍ ZPRÁVY Kotrmelec. Tedy ve chvíli, kdy někdo (v našem případě tlačítko) rozeslal zprávu kotrmelec, se vykoná skript pro animaci otočení dokola.
Vytvoření nové zprávy
Ještě jsme si neřekli, co to ta zpráva vlastně je a jak ji vytvoříme. Zpráva je vlastně jen jakýsi kód, je definovaná pouze názvem, v našem případě Kotrmelec. Nemá žádný obsah, neobsahuje žádnou zprávu ve smyslu textu. Název zprávy je dobré volit podle toho, k čemu zprávu využijeme. Klidně můžeme zprávu pojmenovat XBZAH68, nebo Zprava1 , je to jedno. Program se bude chovat stále stejně, pouze nám se v něm bude hůře orientovat.
Vlastních zpráv můžeme mít v programu libovolné množství. Zprávu vytvoříme tak, že použijeme příkaz ROZEŠLI VŠEM, šipkou rozklikneme výběr zprávy a zvolíme nová zpráva. Pak se objeví okno, kam jen zadáme jméno nové zprávy (musí být unikátní, tj. ještě nepoužité).
Malé cvičení
Vyzkoušejte si následující úpravy, jsou důležité pro pochopení mechanismu zpráv.
Jak udělat, aby tučňák udělal kotrmelec hned po spuštění programu. Stačí kamkoliv (do tučňáka, tlačítka či scény) umístit skript PO KLIKNUTÍ NA VLAJKU, ROZEŠLI VŠEM Kotrmelec. Jednu zprávu může tedy vysílat více scénářů (tlačítko a hned po spuštění programu).
Jak udělat, aby krom tučňáka dělala kotrmelec ještě kočka. Přidejte do scény kočku a zkopírujte jí stejný skript, jako má tučňák. S tlačítkem nemusíme dělat nic, zprávu stačí vyslat jednou. Na jednu vyslanou zprávu tedy může reagovat více scénářů.
A jak přidat tlačítko pro výskok. Přidejte nové tlačítko, které rozešle jinou zprávy (Vyskok) a k tučňákovi přidejte skript PO OBDRŽENÍ ZPRÁVY Výskok proveď animaci výskoku. Jedna postava může reagovat na více různých zpráv.
Rozešli všem a čekej
Variantou příkazu ROZEŠLI VŠEM – je příkaz ROZEŠLI VŠEM – A ČEKEJ. Tento příkaz vyšle zprávu, ale kód nepokračuje hned dále, ale čeká, až skončí všechny scénáře, které se spustili po obdržení této zprávy. Toto se dá výhodně využít například při skládání více animací za sebou. Z jednoho scénáře řídíme pomocí správ spouštění animací.
Máme zaručeno, že nejdříve doběhnou všechny animace, které se spustila Zprava 1, než se rozešle Zprava 2 atd.
Využití zpráv
Využití zpráv je velice široké. V mnoha dalších příkladech a cvičeních budeme zprávy používat. Zde je jen několik typických způsobů využití.
Komunikace mezi postavami
Pomocí zpráv můžeme dát vědět z jedné postavy do druhé, že se stalo něco, na co je nutné reagovat. To je příklad tlačítka a tučňáka v našem cvičení.
Řízení postav a pozadí ve scéně
Typické je využití zpráv pro řízení složitějších animací, různých příběhů, kde se kombinuje více postav a více pozadí. Podívejte se na tento příklad.
A hlavně si podrobně prostudujte kód. Kód najdete zde : https://scratch.mit.edu/projects/125127109/
Všimněte si
- Celá animace je rozdělená na jednotlivé fáze. Fáze 1 – tučnák zepředu mluví, Fáze 2 – tučnák z boku odchází, Fáze 3 – tučnák z boku přichází na poušť, …
- Na začátku (po kliknutí na vlajku) je vyslána zpráva Faze 1
- Podle zprávy se vždy nastaví, která postava je v dané fázi vidět, které pozadí je vidět a jaká animace se spustí.
- Na konci animace se vyšle zpráva s další fází, a vše se podle této zprávy přenastaví.
Podobné využití (ale pomocí příkazu ROZEŠLI VŠEM A ČEKEJ najdeme například v této Pozvánce na narozeniny.
Řízení herních obrazovek
Většina her má nějakou úvodní obrazovku, jednu nebo více obrazovek vlastní hry, závěrečnou obrazovku. Přepínání obrazovek také obvykle řídíme pomocí zpráv. Podívejte se na článek Jak udělat úvodní a závěrečnou obrazovku.