Lernpfad:Scratch für Fortgeschrittene/Nachrichten zwischen Figuren versenden

Aus Informatik-Box
Zur Navigation springen Zur Suche springen

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.

Erstellen einer neuen Nachricht in Scratch 2.0.

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.

Beispiel für das Versenden und Empfangen einer Nachricht in Scratch 2.0.

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.

Aufbau des Beispielprojekts zum Versenden und Empfangen einer Nachricht in Scratch 2.0.

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.

Das Skript des Fußballs sieht so aus:
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
Das Skript des Basketballs sieht so aus:
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.

Beispiel für das Versenden und Empfangen einer Nachricht in Scratch 2.0.