Aus Das deutschsprachige Scratch-Wiki

Klonen ist ein Feature in Scratch 2.0, das es dir erlaubt, einen Klon (=eine 1:1 Kopie) von einer Figur zu kreieren, während das Projekt läuft.

Es erspart viel Programmierarbeit und ist eleganter und flexibler, eine einzigen Figur während der Laufzeit als Kopie zu klonen, anstatt bereits beim Programmieren des Projekts eine bestimmte Anzahl Kopien zu erstellen. Man braucht dann nämlich nur diese eine Figur zu bearbeiten, statt alle programmierten Kopien, ist sich sicher, dass alle Kopien wirklich gleich sind und kann stets genau die beliebig hohe Anzahl von Kopien der Figur erzeugen, die benötigt wird.

Das kann nützlich sein, wenn man zum Beispiel ein "Schieß- und Treffspiel" macht, in dem man eine unendliche Anzahl an Geschossen benötigt, oder viele Meteoriten für ein Weltraumspiel, oder viele Geister bei Packman. Auch Explosionen oder Feuerwerk lassen sich damit leicht realisieren: Jeder Klon bekommt bei seiner Entstehung eine andere Richtung, alle fliegen gleichzeitig vom Ursprung weg und verschwinden, sobald sie den Rand erreichen.

Der Klon wird das gleiche sein, wie die originale Figur, aber als seperate Ebene. Das kann man sich als genaue Kopie der Figur vorstellen, so wie wenn Du ein Blatt Papier kopierst. Danach kann man dieses Blatt ja auch bearbeiten, ohne dass das Auswirkungen auf das Original hat. So ist es auch bei Scratch: Der Klon erbt die Skripte, Kostüme, Klänge, und Beschaffenheiten, kann aber auch verändert werden. Das Klon-Limit liegt bei 301, damit das Projekt später nicht hängt oder deinen Browser zum Abstürzen bringt. Ein Klon übernimmt alle Eigenschaften der "Mutterfigur", also nimmt er das momentane Kostüm, die Effekte und alle Werte der lokalen Variablen an, diese lassen sich danach allerdings nur seperat ändern, das heißt, eine Änderung des Kostüms der Originalfigur wirkt sich nicht auf das Kostüm des Klons aus.

Anwendungen

  • Bewegbare Kopien einer Figur erstellen
  • Erzeugung von Geschoßen und Gegner in Schieß- und Treffspielen
  • Scrollender Hintergrund auf Kachelbasis
  • Effekte kreieren
  • Zeichenweise Ausgabe von Text


Das kann nützlich sein, wenn man zum Beispiel ein "Schieß- und Treffspiel" macht, in dem man eine unendliche Anzahl an Geschossen benötigt. Der Klon wird das gleiche sein, wie die originale Figur, aber als seperate Ebene. Das kann man sich als genaue Kopie der Figur vorstellen, so wie wenn Du ein Blatt Papier kopierst. Danach kann man dieses Blatt ja auch bearbeiten, ohne dass das Auswirkungen auf das Original hat. So ist es auch bei Scratch: Der Klon erbt die Skripte, Kostüme, Klänge, und Beschaffenheiten, kann aber auch verändert werden.

Aus praktischen Gründen gibt es nicht wirklich "unendlich viele Klone" sondern ein Limit das aktuell bei 301 Klonen maximal liegt, damit das Projekt später nicht hängt oder deinen Browser zum Abstürzen bringt. Ein Klon übernimmt alle Eigenschaften der "Mutterfigur", also nimmt er das momentane Kostüm, die Effekte und alle Werte der lokalen Variablen an, diese lassen sich danach allerdings nur seperat ändern, das heißt, eine Änderung des Kostüms der Originalfigur wirkt sich nicht auf das Kostüm des Klons aus.

Anwendungen

  • Bewegbare Kopien einer Figur erstellen
  • Erzeugung von Geschoßen und Gegner in Schieß- und Treffspielen
  • Scrollender Hintergrund auf Kachelbasis
  • Effekte kreieren
  • Zeichenweise Ausgabe von Text

Blöcke

  • "Erzeuge Klon von ()" wird benutzt, um eine Figur zu Klonen. Man kann auch Klone erneut klonen
  • "Wenn ich als Klon entstehe" lässt das vom Klon auszuführende Skript starten, sobald dieser Klon erzeugt wurde
  • "Lösche diesen Klon" löscht den Klon am Ende seines Skriptes
  • Variablen sind für alle Klone gleich, außer sie sind "nur für diese Figur". Solche lokalen Variablen können für parallel existierende Klone unterschiedliche Werte annehmen. Sie können von außerhalb ihres Klons weder gelesen noch überschrieben werden.
Wenn ich als Klon entstehe

erzeuge Klon von [mir selbst v]

lösche diesen Klon

Blöcke für Klone

Klonsensor

Um zu wissen, wann ein bestimmter Klon berührt wird, benötigt man eigentlich einen "wird Klon [1] berührt"-Block. Da es diesen jedoch nicht gibt, kann man folgendes Workaround benutzen:

Wenn gf angeklickt //Sobald das Projekt startet
lösche (alles v) aus [berührt? v]
setze [Klone v] auf (0) //Setzt die momentane Anzahl an Klonen auf 0
füge [ ] zu [berührt? v] hinzu //fügt ein neues Item zur Liste hinzu
ändere [Klone v] um (1) //direkt vor dem Klonen muss die Anzahl der Klone verändert werden
erzeuge Klon von [mir selbst v]

Wenn ich als Klon entstehe
setze [Klon ID v] auf (Klone) //setzt die Nummer des Klons auf die Anzahl der Klone die es gibt (da diese Anzahl immer die Nummer des zuletzt erzeugten Klons ist)
wiederhole fortlaufend
falls <wird [Figur2 v] berührt?> //gibt zurück ob der aktelle Klon Figur2 berührt
ersetze Element (Klon ID) von [berührt? v] durch [wahr] //An der Stelle der Klonnummer wird wahr eingefügt
warte bis <nicht <wird [Figur2 v] berührt?>> //der Klon wartet, bis Figur2 nicht mehr berührt wird
ersetze Element (Klon ID) von [berührt? v] durch [falsch] //gibt zurück, dass der aktuelle Klon Figur2 nicht berührt

Das folgende Skript wird in Figur2 benutzt.

Wenn gf angeklickt 
wiederhole fortlaufend
gehe (3)er-Schritt
drehe dich im Uhrzeigersinn um (3) Grad //Beispiel
falls <(Element (4) von [berührt? v]) = [wahr]> //falls Element 4 der Liste wahr anzeigt, bedeutet das, dass Figur2 Klon 4 berührt
sage [Hallo Klon 4!] für (2) Sek.

Beispielprojekt

Fahre mit dem Mauszeiger über das Bild und schau was passiert. Neugierig wie das funktioniert? Schau dir dieses Projekt auf der Scratch Website an und "schaue hinein".



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


Klonen in Scratch-Modifikationen

Es gibt zwei verschiedene Arten von Klonen in verschiedenen Scratch Modifikationen. Allgemein bezeichnet man sie als "Panther-Style Cloning" und "BYOB-Style Cloning".

Im Panther-Style Cloning erbt der Klon die Eigenschaften der originalen Figur, wird dadurch aber keine neue Figur. Andere Figuren können den Klon fühlen, indem sie den Wird () berührt?-Block mit der originalen Figur als Auswahl benutzen. Der Code für das Panther-Style Cloning war in Scratch 1.4 bereits implementiert, was darauf hinwies, dass es ein geplantes Feature war. Dieser Klon-Style wird in Scratch 2.0 benutzt.

Im BYOB-Style Cloning ist ein Klon eine neue Figur in der Liste der Figuren, mit eigenem veränderbarem Speicher. Klone werden mit dem clone-Block kreiert, wodurch eine Figur geklont wird und eine Verbindung zum Klon erstellt wird, durch die man diesen kontrollieren kann.



Code zum Einbinden ins Forum:
[wiki=de:Klonen]Klonen[/wiki]