Lernpfad:Scratch für Fortgeschrittene/Nachrichten zwischen Figuren versenden
Wie du schon weißt hat die Bühne und jede Figur in Scratch ihren eigenen Skriptbereich. Die Algorithmen, die du dort erstellst wirken sich nur auf die entsprechende Figur aus. Zum Beispiel bewegt eine gehe (10)er-Schritt
Anweisung die Figur, in deren Skriptbereich sie steht. Das bedeutet aber auch, dass eine Figur nicht von einer anderen bewegt werden kann.
Wird ein Scratchprojekt komplexer, dann kommt man schnell an den Punkt, dass eine Aktion in einer Figur eine Aktion in einer anderen auslösen soll. Für solche Fälle können in Scratch Nachrichten genutzt werden. Stell die eine Nachricht wie eine Türklingel vor. Sobald eine Figur die Klingel betätigt hören alle anderen Figuren im Projekt das Klingeln. Mehr Informationen werden nicht übertragen. Es kann allerdings auch mehrere Türklingeln geben, so dass die anderen Figuren zumindest unterscheiden können, welche betätigt wurde.
Nachrichten erstellen und versenden
Zum Versand von Nachrichten gibt es in Scratch zwei Anweisungen, die in der Kategorie Ereignisse zu finden sind:
sende [Nachricht1 v] an alle
- Sendet die Nachricht
Nachricht1
an alle anderen Figuren und führt sofort die nächste Anweisung im Skript aus. Sende [Nachricht1 v] an alle und warte
- Sendet die Nachricht
Nachricht1
an alle anderen Figuren und wartet, bis alle Figuren ihre Reaktion auf die Nachricht beendet haben, bevor mit der nächsten Anweisung weiter gemacht wird.
Welche Nachricht versendet wird, kann im aufklappbaren Menü der Blöcke gewählt werden. Dort gibt es auch einen Menüpunkt neue Nachricht..., mit dem man eigene Nachrichten erstellen kann.
Auf Nachrichten reagieren
Figuren können auf Nachrichten reagieren. Dazu gibt es eine Anweisung ähnlich zum bekannten Wenn die grüne Flagge angeklickt
Befehl.
Wenn ich [Nachricht1 v] empfange
- Die folgenden Anweisungen des Skriptes werden ausgeführt, sobald eine Figur die Nachricht
Nachricht1
versendet.
Beispiele
In diesem Beispiel existieren zwei Figuren, ein Button und ein Ball mit mehreren Kostümen. Durch den Klick auf den Button wird ein Kostümwechsel des Balls ausgelöst, indem die Nachricht angeklickt
vom Button versandt wird.
Komplizierter wird es, wenn eine Figur nicht nur auf eine Nachricht reagieren soll, sondern noch weitere Informationen von der Figur benötigt, die die Nachricht ausgelöst hat. In diesem Beispiel gibt es einen Fuß- und einen Basketball als Figur.
Der Fußball fliegt von alleine über die Bühne und prallt vom Rand ab. Sobald er den Basketball berührt, sollen beide Bälle wie in einer echten Kollision voneinander wegbewegt werden. Das bedeutet, der Fußball bewegt sich in die entgegengesetzte Richtung wie zuvor und der Basketball bewegt dich in die Richtung, die der Ball bei der Kollision hatte. Er muss also eine Information vom Fußball abrufen, bevor er sein Skript korrekt ausführen kann.
Wenn die grüne Flagge angeklickt gehe zu x:(-100) y:(0) setze Richtung auf (Zufallszahl von (0) bis (360)) wiederhole fortlaufend gehe (10)er-Schritt falls <wird [Basketball v] berührt?> dann drehe dich nach rechts um (180) Grad sende [kollision v] an alle end pralle vom Rand ab end
Wenn die grüne Flagge angeklickt gehe zu x:(100) y:(0) Wenn ich [kollision v] empfange setze Richtung auf ([richtung v] von [Fußball v]) drehe dich nach rechts um (180) Grad wiederhole fortlaufend gehe (5)er-Schritt pralle vom Rand ab end
Beachte, dass der Basketball zuerst die Richtung des Fußballs übernimmt. Da sich der Fußball aber vor dem Versandt der Nachricht kollision
aber selber schon um 180 Grad gedreht hat, muss sich der Basketball selber auch wieder um 180 Grad drehen, um in die Richtung zu zeigen, die der Fußball bei der Kollision hatte.