Wir nutzen Cookies, um das allgemeine Benutzerelebnis zu verbessern. Mit der Nutzung unseres Wikis stimmst du der Nutzung von Cookies zu.

Klonen

Klonen ist ein Feature in Scratch 2.0, das es dir erlaubt, einen Klon von einer Figur zu kreieren, während das Projekt läuft. 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. 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.

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

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.

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.

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
entferne [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 (Klon ID) Element 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 (Klon ID) Element 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...




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