Lernpfad:Scratch für Fortgeschrittene/Figuren klonen
Hat man in einem Projekt mehrere Figuren mit denselben Skripten, aber unterschiedlichem Aussehen, oder eine Figur, die mehrmals auf der Bühne erscheinen soll, dann kopiert man einfach die Figur. So einfach ist das.
Allerdings hat dieses Vorgehen viele Nachteile:
- Was, wenn es eine Änderung im Skript geben soll? Dann muss die Änderung mehrmals in jeder kopierten Figur vorgenommen werden.
- Oder wenn es sehr viele Kopien der Figur geben muss? Dann verliert man unter all den gleich aussehenden Figuren schnell den Überblick.
- Oder wenn vorher nicht bekannt ist, wie viele Kopien der Figur man braucht?
Für solche Fälle gibt es in Scratch die Möglichkeit Klone einer Figur zu erstellen.
Klone erstellen und programmieren
erzeuge Klon von [mir selbst v]
- Ereugt bei der Ausführung einen exakten Klon von der aktuellen Figur. Allerdings laufen noch keine Skripte. Der Klon existiert, solange das Projekt gestartet ist. Sobald es gestoppt wird (), werden alle erstellten Klone wieder gelöscht.
- Es können auch Klone von anderen Figuren erstellt werden. Zum Beispiel könnte ein Baum im Herbst Klone seiner Blätter erzeugen, die langsam zu Boden gleiten.
Wenn ich als Klon entstehe
- Wird ausgelöst, wenn ein Klon mit
erzeuge Klon von [mir selbst v]
erstellt wurde.
Klone löschen
lösche diesen Klon
- Löscht den aktuellen Klon und stoppt alle seine Skripte.
Eigenschaften von Klonen
Ein Klon sieht zunächst genauso aus wie die Figur. Es hat auch dieselben Skripte und verhält sich daher genauso.Um das Verhalten der Klone zu variieren gibt es verschiedene Möglichkeiten. Dazu wird mit der Wenn ich als Klon entstehe
Anweisung ein Skript erstellt, dass für jeden Klon leicht anders abläuft.
Zufälliges Verhalten
Die einfachste Möglichkeit, das Verhalten zu variieren, ist es, mit dem Zufall zu arbeiten. In der Kategorie Operatoren findet sich die Anweisung Zufallszahl von () bis ()
, mit der Zufallszahlen in einem festgelegten Bereich erzeugt werden können.
Zum Beispiel könnte der Scratch-Katze in einem neuen Projekt das folgende Skript einprogrammiert werden:
Wenn die grüne Flagge angeklickt wiederhole (10) mal erzeuge Klon von [mir selbst v] warte (1) Sek. end Wenn ich als Klon entstehe setze x auf (Zufallszahl von (-200) bis (200)) setze y auf (Zufallszahl von (-180) bis (180)) setze [Farbe v]-Effekt auf (Zufallszahl von (10) bis (100))
Wir nun die grüne Flagge () angeklickt, dann entstehen nach und nach zehn Klone der Katze, die sich zufällig auf der Bühne verteilen und eine zufällige Farbe annehmen.
Verhalten abhängig von Bedingungen
Eine andere Möglichkeit ist es, das Verhalten von Klonen abhängig von bestimmten Bedingungen zu verändern. Zum Beispiel könnte man den Anschein einer Bewegung erzeugen, indem man Figuren (zum Beispiel Bäume) im Vor- und Hintergrund der Bühne bewegt. Bäume weiter im Hintergrund müssten sich dann langsamer bewegen, als solche im Vordergrund. Die Geschwindigkeit der Bewegung einer Baumfigur wird also von seiner Position auf der Bühne festgelegt.
Die Baumfigur positioniert sich zufällig auf der Bühne und erzeugt einen Klon von sich selber. Jeder Klon bewegt sich dann Schrittweise nach links. Die Schrittweite wird durch die y-Position des Klons bestimmt. Ist die y-Position größer als -120
, dann bewegt sich der Baum etwas langsamer, sonst schneller.
Das Skript der Klone sieht wie folgt aus:
Wenn ich als Klon entstehe zeige dich wiederhole bis <wird [Rand v] berührt?> falls <(y-Position) > [-120]> dann gehe (-8)er-Schritt sonst gehe (-16)er-Schritt end end lösche diesen Klon
Variablen nutzen
Eine dritte Möglichkeit, das Verhalten von Klonen zu beeinflussen, sind Variablen. Wie im Schritt Figuren animieren beschrieben sind Variablen Speicher für Informationen, in denen jeweils ein Wert abgelegt und später wieder abgerufen werden kann. Dort ist auch der Unterschied zwischen globalen und lokalen Variablen erklärt.
Das Besondere an lokalen Variablen ist, dass sie für jeden Klon einen anderen Wert speichern können.
Das folgende Beispiel verdeutlicht dies. Es enthält eine Figur, die zehn verschiedene Kostüme hat. Jedes Kostüm stellt eine andere Ziffer von 0 bis 9 dar. Außerdem hat die Figur eine lokale Variable (nummer)
. Beim Klick auf die grüne Flagge () wird nun im Abstand von 0,5 Sekunden jeweils die Variable mit ändere [nummer v] um (1)
um eins erhöht, sowie ein Klon erzeugt. Die Klone wiederum gleiten innerhalb von einer Sekunde zu einer Position, die sich aus der (nummer)
berechnet und wechseln dann zur Kostüm mit der in (nummer)
gespeicherten Nummer. Beachte, dass der Kostümwechsel erst nach einer Sekunde stattfindet, wenn schon längst der nächste Klon erzeugt wurde und damit auch die (nummer)
schon wieder hochgezählt wurde. Die Klone haben sich aber den Wert bei ihrer Erzeugung gemerkt und wechseln so zum richtigen Kostüm.
Das Skript sieht wie folgt aus:
Wenn die grüne Flagge angeklickt setze [nummer v] auf (0) gehe zu x:(-200) y:(0) wiederhole (10) mal ändere [nummer v] um (1) erzeuge Klon von [mir selbst v] warte (0.5) Sek. end Wenn ich als Klon entstehe gleite in (1) Sek. zu x:((-200)+((nummer)*(40))) y:(0) wechsle zu Kostüm (nummer)