Aus Das deutschsprachige Scratch-Wiki

ID's: Jeder Klon eine andere Aufgabe

Einstieg

Jeder hat wahrscheinlich schon mal versucht ein wenig mit Klonen zu arbeiten und so ziemlich jeder hat schon festgestellt, dass jeder Klon das gleiche Skript ausführt, aber Klone in Scratch können noch viel mehr. Wenn du mehr über Klone erfahren willst, dann lies diesen Artikel zu Ende.

Klone: Grundeigenschaften

Klone spielen in vielen Projekten eine wichtige Rolle. Es gibt ein Klone-Limit von 300 Klonen in Scratch damit die Projekte nicht zu sehr laggen/huckeln. Ganz wichtig ist, dass Klone den ""gesammten"" Skripte/Kostüme/Klänge -Bereich seiner Originalfigur. Folgendes Beispiel:

Wenn die grüne Flagge angeklickt
erzeuge Klon von [mir selbst v]
warte (1) sekunden
sende [Start v]an alle

Wenn ich als Klon entstehe
gehe zu x: (100) y: (0)

Wenn ich [Start v] empfange
sage [Hallo]

Wenn du dieses Skript schreibst, wirst du beim Ausführen bemerken, dass auch der Klon "Hallo" sagt. Woran ligt das? Ganz einfach, der Klon hat auch die Skripte übernommen weswegen er auch Nachrichten erhält. Um dies zu vermeiden kann man folgendes machen.

Wenn die grüne Flagge angeklickt
setze [clone? v] auf (1) //Eine lokale Variable
erzeuge Klon von [mir selbst v]
setze [clone? v] auf (0)
warte (1) sekunden
sende [Start v]an alle

Wenn ich als Klon entstehe
gehe zu x: (100) y: (0)

Wenn ich [Start v] empfange
if <(clone?) = (0)> then
sage [Hallo]
ende

Wenn du das Programm jetzt ausführst wirst du sehen, dass der Klon nichts sagt. Wieso? Der Klon übernimmt auch die lokalen Variablen[1] der Originalfigur. Die übernommenen lokalen Variablen gelten dann auch nur für den Klon. Wir setzen die Variable "clone?" auf 1. Der Klon übernimmt diese Variable mit dem Wert1, dann wird sie ""nur"" für die Originalfigur auf 0 gesetzt, sodass der Klon immer noch den Wert 1 hat. Wir bauen dann einen falls <> dann -Block ein der erkennt ob diese Variable 0 ist. Bei den Klonen bleibt sie 1 und somit wirt dieses Skript nicht ausgeführt. So können wir auch anfangen ID's[2]

ID's

Ein ID ist die Identität eines Objekts[3]. Diese ID bestimmt was der Klon machen soll.

Skript:

(ID) //Diese Variable steht für die ID des Klons, sie ist lokal

Wenn die grüne Flagge angeklickt
setze Klone :: custom
sage [Ich bin die Originalfigur!] für (3) Sekunden

Definiere setze Klone //Ohne Bildschirmaktualisierung laufen lassen
setze [ID v] auf [0]
repeat (4)
ändere [ID v] um (1)
erzeuge Klon von [mir selbst v]
end

Wenn ich als Klon entstehe
falls <(ID) = [1]> , dann
gehe zu x: (-100) y: (100)
sage [Ich bin Klon 1!] für (3) Sekunden
sonst
falls <(ID) = [2]> , dann
gehe zu x: (100) y: (100)
sage [Ich bin Klon 2!] für (3) Sekunden
sonst
falls <(ID) = [3]> , dann
gehe zu x: (-100) y: (-100)
sage [Ich bin Klon 3!] für (3) Sekunden
sonst
falls <(ID) = [4]> , dann
gehe zu x: (100) y: (-100)
sage [Ich bin Klon 4!] für (3) Sekunden
ende
ende
ende
ende
lösche diesen Klon

Wenn du das Programm jetzt ausführst wirst du bemerken, dass die Klone sich anordnen und sagen welcher Klon sie sind. Jedes Mal, wenn ein Klon erzeugt wird, wird die lokale Variable ID größer. Der Ersre Klon übernimmt die Variable ID mit dem Wert 1, der Zweite mit 2... Der Klon nimmt die Änderung der Variable bei der Originalfigur nicht wahr, da er seine eigene hat und die der Originalfigur nicht für ihn gilt. So kann man einige Projekte machen wo man nicht so viele Figuren möchte. In meinem Intro habe ich nur eine Figur in welcher Klone erzeugt werden welche alle eine andere ID haben. So lässt sich einiges, was man sehr oft braucht, einfach in vielen Projekten einfügen.

Hier ein Beispiel für so etwas. Sowas habe ich in meinem Intro verbaut, da ich mein Intro sehr oft benötige:




Schau' dir dieses Projekt auf der Scratch-Webseite an...


Abschied

Ich hoffe, dass du mit diesem Tutorial was anfangen konntest und einiges gelernt hast. Vies Spaß und viel Glück für die Zukunft! Tongue-out-cat-emoji.png


Referenzen

  1. Lokale Variablen sind Variablen die nur für eine Figur gelten.
  2. ID heißt Identität also ist sie die "Persönlichkeit" einer Figur/eines Klones.
  3. Ein Objekt in der Programmiersprache ist zum Beispiel eine Figur oder eine Variable.


Geschrieben von Alpha-Craft.