Hier leer je om signalen te gebruiken.
Zenden en ontvangen van signalen
Tot nu toe hebben we vooral programma’s geschreven voor één sprite. In dit deel bekijken we wat we kunnen doen met meerdere sprites. Het filmpje toonde al dat we sprites met elkaar kunnen laten praten.
In Scratch kunnen sprites signalen verzenden en ontvangen. Dit gebeurt met de blokken uit het palet Gebeurtenissen.
Blok | Uitleg |
---|---|
broadcast [boodschap];
|
Stuur het signaal boodschap naar alle sprites. Ook de sprite die het signaal stuurt zal het ontvangen. |
broadcast [boodschap] and wait;
|
Hier gebeurt hetzelfde als met het vorige blokje, alleen zal de sprite blijven wachten en verder niets meer doen. |
when I receive [boodschap];
|
Wanneer de sprite het signaal boodschap ontvangt worden alle blokken onder dit blok uitgevoerd. |
Een klein voorbeeldje
We beginnen met de volgende code voor Unix. Hier vraagt Unix aan Ruby hoe het met haar gaat en stuurt dan een signaal dat “hallo Ruby” heet.
when greenflag clicked
say {"Hallo Ruby!"} for {2} seconds
say {"Hoe gaat het met jou?"} for {2} seconds
broadcast [hallo Ruby];
Ruby heeft de volgende code. Deze zal pas worden uitgevoerd als het bijhorende signaal wordt verstuurd. Wanneer Ruby dus het signaal “hallo Ruby” ontvangt, zal Ruby antwoorden op de vraag van Unix.
when I receive [hallo Ruby];
say {"Hallo Unix!"} for {2} seconds
say {"Het gaat erg goed met mij!"} for {2} seconds
En nu aan de slag
- Maak het voorbeeld eens na in Scratch.
- Pas het voorbeeld aan op de volgende manier:
- Laat Unix heen en weer bewegen wanneer het signaal is verzonden.
- Gebruik ook eens het andere “zend signaal” blokje bij Unix. Wat is het verschil met het vorige blokje?
broadcast [hallo Ruby] and wait;
- Laat Ruby een signaal terugzenden naar Unix.
- Tijd voor een goede mop! Of een raadsel?
- Weet jij een goede mop? Of weet jij een goed raadsel? Laat Ruby dit aan Unix vertellen.
- Laat Ruby iets zeggen en dan een signaal zenden waarop Unix kan reageren door ook iets te zeggen.
- Ga zo verder tot je mop of raadsel helemaal klaar is.