Was sind Listen und Klone in Scratch?

1 Antwort

Eine Liste ist eine Sammlung von Daten. Du kannst genauso wie du Variablen erstellen kannst, kannst du auch eine Liste erstellen und dieser kannst du mit den Blöcken dazu Werte hinzufügen entfernen und dir Elemente aus der Liste auslesen lassen. Ein wirkliches Beispiel kann man jetzt nicht dazu geben. Erstell dir einfach mal eine Liste und probier die Blöcke von dieser aus (müsste ziemlich selbsterklärend sein).

Klone sind quasi Kopien der Figur von der du die Kopie erstellt hast. Mit Kopien kann man alles machen was man mit der Figur auch machen kann (Bewegen, Sounds, Kostüme, usw.). Ein Beispiel das mir jetzt so spontan einfällt wäre in einem Shooter das wenn man schießt das, dann die Waffe ein Klon erstellt der sofort zu einen 'Kugel' Kostüm wechselt und sich dann bewegt bis ein Ziel getroffen wird und dann sich löscht. Das ist auch ein Vorteil den Klone im Gegensatz zu Figuren haben haben das man diese Löschen kann. Ein grober Anfangs Code dafür könnte so aussehen:

Bild zum Beitrag

Ich hoffe ich konnte dir helfen, wenn du noch weitere Fragen hast kannst du gerne unter diese Antwort ein Kommentar mit der Frage machen.

lg Suiram1

 - (Programmiersprache, Scratch)

lola123296 
Fragesteller
 27.02.2024, 21:56

hi , danke für deine Antwort . was ich noch nicht verstehe ist , warum man diese kopien braucht , wenn man schon eine figur hat....

0
Suiram1  27.02.2024, 22:03
@lola123296

Wenn es sich um Objekte handelt die in theoretisch unbegrenzter Menge erscheinen können, wie mein Beispiel mit den Kugel aus einer Waffe in einem Shooter, denn da wäre es ziemlich aufwendig es umsetzen wenn man mehrmals hintereinander schießen kann (also wenn mehrere gleichzeitig zusehen sind). Oder auch ein anderes Beispiel wären die Teile der Schlage in Snake.

Grob zusammengefasst kann man Klone verwenden wenn es sich um Objekte handelt die sehr oft vorkommen können und die die selbe Logik besitzen.

0
lola123296 
Fragesteller
 27.02.2024, 22:57
@Suiram1

om danke du hast mich vor der arbeit gerettet!!!!

0
GoldenGave  28.02.2024, 23:19
@lola123296

Hi! Stell dir mal folgendes vor: Du programmierst ein Raumschiff Spiel auf Scratch. Du hast eine Figur namens "Spieler" und eine andere Figur namens "Laser". Du programmierst, dass wenn die grüne Flagge gedrückt wird, das Spiel startet und sich der Spieler mit den Pfeiltasten auf deiner Tastatur bewegen kann.

Nun willst du programmieren, dass wenn der Spieler die Leertaste drückt, dass ein Laserstrahl aus dem Raumschiff (bzw. Spieler) rausgeschossen wird. Hierfür gibt es eine Lösung mit Klonen und ohne.

Ohne Klone:

Du benutzt den Block "Wenn Leertaste gedrückt" und ziehst ihn in das Codefeld von den Figur "Laser". Darunter folgt der Block "Gehe zu (Figur)" und setzte im Dropdown-Menü die Figur des Spielers ein. Nun kommt eine "Wiederhole bis (Rand berührt)" Schleife. In diese Schleife setzt du ein: "Ändere Y-Achse um (10)". Das hat zufolge, dass jedesmal wenn du die Leertaste drückst, der Laser sich zum Spieler hinteleportiert und nach oben schießt bis er den Rand berührt.

Das hat jedoch ein Problem: Wenn du die Leertaste mehrmals hintereinander drückst, teleportiert sich der Laser immer wieder zurück zum Spieler. Wir wollen aber hinkriegen, dass sich jeder Laser unabhängig voneinander bewegt. Wenn ich also zwei mal hintereinander die Leertaste betätige, schießen zwei Laser aus meinem Raumschiff heraus. Um das hinzubekommen benutzt man Klone:

Verstecke als erstes die Originalfigur "Laser". Nutze also "Wenn grüne Flagge gedrückt" und "Verstecke dich". Nun erstellen wir eine neue Variable namens "Bin ich ein Klon?". Die Variable muss auf "Nur für diese Figur" eingestellt sein. Die Variable setzten wir standardmäßig auf 0. Nun füge den Block "Wenn Leertaste gedrückt" und "Erzeuge Klon von mir selbst" in das Codefeld hinein. Umklammere jedoch den Block "Erzeuge Klon von mir selbst" mit einer "Falls (), dann ()..." Überprüfung. Als Kondition überprüfst du, ob die Variable "Bin ich ein Klon?" gleich 0 ist. Nur dann wird ein Klon erstellt.

Warum ist das so? "Wenn Leertaste gedrückt" sendet ein Signal an ALLE Figuren UND Klone wenn der Knopf gedrückt wird. Das bedeutet, dass wenn nur die Originalfigur existiert, ein einziger Klon vom Laser erzeugt wird. Jetzt haben wir die Originalfigur UND einen Klon. Wenn nun die Leertaste nocheinmal gedrückt wird, sendet der Block ein Signal an die Orignalfigur UND den Klon, was zufolge hat, dass beide Figuren einen Klon erstellen. Nun werden 2 neue Laser erschaffen anstelle von einem. Deswegen brauchen wir die Überprüfung, ob die Figur die Originalfigur ist und kein Klon, bevor wir einen neuen Klon erstellen.

Nun ziehen wir noch einen Block hinein, unswar "Wenn ich als Klon starte". Dorthinein kommen folgende Blöcke: "Gehe zu (Spieler)", "Wiederhole bis (Rand berührt?)" und darin "Ändere Y-Achse um (10)". Nach der Schleife folgt der Block "Lösche diesen Klon". Wenn also der Rand berührt wird, soll der Laser gelöscht werden.

Ich hoffe ich konnte dir irgendwie weiterhelfen! Wenn du noch irgendwelche Fragen hast lass es mich gerne wissen. Ich nutze Scratch schon seit 5+ Jahren ;)

1