https://scratch.mit.eduZde najdete Scratch

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á.prikaz_pokliknutinavlajku

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:lekce_mys5

nebo mohou běžet donekonečna (tj. dokud program neskončí), pokud po události následuje nějaký nekonečný cyklus. Například zde:lekce_mys1

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:lekce_zpravy1

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:lekce_zpravy2

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é).lekce_zpravy3

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í. pozvanka1

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.

Doporučení

Nepoužívejte ve svých hrách příkaz PO KLIKNUTÍ NA VLAJKU. Ve chvíli, kdy budete chtít přidat své hotové hře úvodní nebo závěrečnou obrazovku, budete muset všechny začátky scénářů (a je jich obvykle hodně) přepsat na PO OBDRŽENÍ ZPRÁVY Zacatek hry. Je proto lepší si rovnou tuto zprávu zavést a veškeré scénáře začínat touto zprávou a ne kliknutím na vlajku.

A než přidáte úvodní obrazovku, stačí kamkoliv umístit příkaz PO KLIKNUTÍ NA VLAJKU, ROZEŠLI VŠEM Zacatek hry . A to by mělo být jediné použití PO KLIKNUTÍ NA VLAJKU v celém vašem programu.

 

Přehled základních lekcí:

Share This