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

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 11: Zeile 11:
; <sb>Sende [Nachricht1 v] an alle und warte</sb>
; <sb>Sende [Nachricht1 v] an alle und warte</sb>
: Sendet die Nachricht <code>Nachricht1</code> 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.
: Sendet die Nachricht <code>Nachricht1</code> 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.
[[Datei:Scratch NeueNachricht.gif|center|frame|Erstellen einer neuen Nachricht in Scratch 2.0.]]


== Auf Nachrichten reagieren ==
== Auf Nachrichten reagieren ==
Zeile 17: Zeile 21:
; <sb>Wenn ich [Nachricht1 v] empfange</sb>
; <sb>Wenn ich [Nachricht1 v] empfange</sb>
: Die folgenden Anweisungen des Skriptes werden ausgeführt, sobald eine Figur die Nachricht <code>Nachricht1</code> versendet.
: Die folgenden Anweisungen des Skriptes werden ausgeführt, sobald eine Figur die Nachricht <code>Nachricht1</code> 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 <code>angeklickt</code> vom Button versandt wird.
[[Datei:Scratch Nachrichten1.gif|frame|center|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.
[[Datei:Scratch Nachrichten2.jpg|frame|center|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 {{Pfad|Informationen_zwischen_Figuren_austauschen|eine Information vom Fußball abrufen}}, bevor er sein Skript korrekt ausführen kann.
{{Spalten:Start}}
{{Spalte|
Das Skript des Fußballs sieht so aus:
<scratchblocks>
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
</scratchblocks>}}
{{Spalte|
Das Skript des Basketballs sieht so aus:
<scratchblocks>
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
</scratchblocks>}}
{{Spalten:End}}
Beachte, dass der Basketball zuerst die Richtung des Fußballs übernimmt. Da sich der Fußball aber vor dem Versandt der Nachricht <code>kollision</code> 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.
[[Datei:Scratch Nachrichten3.gif|frame|center|Beispiel für das Versenden und Empfangen einer Nachricht in Scratch 2.0.]]
{{Inhalt/Übersicht}}

Aktuelle Version vom 8. September 2020, 12:35 Uhr

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.