Aus Das deutschsprachige Scratch-Wiki

Jede Figur auf der Bühne hat eine X-Position und eine Y-Position, die ganz genau angeben, wo sie sich befindet. Sogar die Maus! Und genauso, wie man mit einem Musikrekorder Töne aufzeichnet und wiedergibt, kann man in Scratch die Bewegung von Figuren oder der Maus aufzeichnen und wiedergeben. Dazu speichert man jede Sekunde, wo sich die Maus oder die Figur befindet, wenn sie sich bewegt.

Die Bewegung des Stiftes

Der Malstift

Bevor wir etwas Gemaltes wiedergeben können, brauchen wir natürlich erstmal einen Stift, der etwas malt! Dieser soll nach dem Klicken der Grünen Flagge der Maus folgen. Dazu geht er in einer Endlos-Schleife zur Maus-x- und Maus-y-Position. Damit keine andere Figur den Stift verdeckt, soll er zu Beginn nach vorne kommen.

Wenn gf angeklickt
komme nach vorn
wiederhole fortlaufend
gehe zu x: (Maus x-Position) y: (Maus y-Position)
end

Zudem muss der Stift malen, wenn man die Maustaste gedrückt hält, und aufhören, wenn man sie wieder loslässt! Dafür erstellt man ein zweites Script, damit die Bewegung und das Malen parallel ablaufen. Zuerst wird der Stift abgehoben, damit er am Anfang nicht malt. Zudem muss man noch die Stiftfarbe (in diesem Fall Bleistift-Grau) und die Stiftdicke festlegen. Nun wartet die Stift-Figur, bis der Benutzer die Maustaste drückt um zu malen, wenn das geschieht senkt er den Stift ab und wartet, bis dis die Maustaste nicht mehr gedrückt ist. Wenn das der Fall ist, hebt er den Stift wieder an.

Wenn gf angeklickt
schalte Stift ein
setze Stiftfarbe auf [#ff0000]
setze Stiftdicke auf (4)
warte (2) Sek.
wiederhole fortlaufend
warte bis <Maustaste gedrückt>
schalte Stift ein
warte bis <nicht <Maustaste gedrückt>>
schalte Stift aus

Damit der Stift mit seiner Spitze malt und nicht mit der Mitte (diese wird von Scratch automatisch ausgewählt), muss man den Drehpunkt der Figur auf die Stiftspitze setzen.

Zum Schluss folgt noch ein einfaches Script, welches das Gemalte wegwischt, wenn man zum Beispiel die Leertaste drückt.

Wenn Taste [Leertaste v] gedrückt
wische Malspuren weg

Aufzeichnen

AuWdBvO-Tutorial-StartStop.png

Das Aufzeichnen des Gemalten wird über eine weitere Figur geregelt, welche zwei Kostüme hat. Zu Beginn wird das "Start-Kostüm" angezogen! Die Taste A muss gedrückt werden, um die Aufnahme zu starten und zu stoppen, daher muss die Figur zwischen den beiden Kostümen wechseln. Das geht ganz einfach mit dem Befehl Nächstes Kostüm! Das erste Kostüm ist hierbei das Start-Icon und das zweite Kostüm soll das Stop-Icon sein.

Wenn gf angeklickt
wechsle zu Kostüm [start v]
Wenn Taste [a v] gedrückt
nächstes Kostüm

Aufgezeichnet wird aber immer noch nichts. Zuerst erinnern wir uns, dass beim Aufzeichnen die X-Position und die Y-Position der Figur, in unserem Fall der Maus, eine große Rolle spielen. Diese werden wir in den sog. Listen abspeichern! Wir erstellen also zwei Listen, die wir "X-Position" und "Y-Position" nennen. Wenn die Aufnahme mit dem A-Klick gestartet wird, wechselt das Start-Kostüm zum Stopp-Kostüm mit der Nummer 2. Also muss zuerst überprüft werden, ob Kostüm Nummer 1 (Start) getragen wird (was bedeutet, die Aufnahme muss erst gestartet werden) oder ob Kostüm Nummer 2 (Stop) getragen wird (die Aufnahme läuft gerade). Wenn letzeres der Fall ist, dann sollen die folgenden Handlungen ausgeführt werden: Zuerst muss alles was in der Liste x-Position und alles was in der Liste y-Position steht gelöscht werden um Platz für neue Daten zu machen. Dann wird die x-Position und die y-Position der Maus solange zur Liste hinzugefügt, bis wieder die A-Taste gedrückt wird. Hierbei wird aber erst geprüft, ob der Benutzer überhaupt zeichnet, d.h. ob die Maustaste gedrückt ist oder nicht. (Erinnere: Zeichnen tut der Stift nur solange, wie man die Maustaste gedrückt hält.)

Wenn gf angeklickt
warte (0.5) Sek.
falls <(Kostümnummer) = [2]>
entferne alles aus [X-Position v]
entferne alles aus [Y-Position v]
wische Malspuren weg
wiederhole bis <Taste [a v] gedrückt>
falls <Maustaste gedrückt>
füge (Maus x-Position) zu [X-Position v] hinzu
füge (Maus y-Position) zu [Y-Position v] hinzu
end
end
end

Wiedergabe

Geister stift

Der "Geisterstift" wird dann aktiv, wenn man "W" drückt, um das Aufgezeichnete wiederzugeben. Am Anfang des Programms, wenn man die Grüne Fahne klickt, sollte man die Stiftdicke und -farbe festlegen, außerdem befindet sich der Stift dann in der linken unteren Ecke neben dem Start-/Stopsymbol.

Wenn gf angeklickt
setze Stiftfarbe auf [#ff0000]
gehe zu x: (-174) y: (-175)

Die Taste "W" wie Wiedergabe ist für den Geisterstift das Zeichen in Aktion zu treten. Er soll nun anhand der in den Listen gespeicherten Koordinaten das nochmal malen, was der Benutzer mit dem Stift gezeichnet hat. Wie funktioniert das?

Zwei Beispiellisten

Denk daran, dass Scratch wie ein großes Koordinatensystem ist! Der 1. Wert der X-Liste und der 1. Wert der Y-Liste ergeben zusammen eine Koordinate: (-178/-27). Dort beginnt die Zeichnung! Der Geisterstift muss also dort hingehen und sich dann absenken. Dannach muss er alle Koordinaten "einmal" abfahren, dazu nehmen wir eine Schleife. Die Anweisung muss so oft wiederholt werden, wie Koordinaten in der Liste sind, unsere Listen haben jeweils 6 Werte. Dazu verwendet man den Befehl Länge von Liste. Beim ersten Mal muss er zur 1. Koordinate (also Wert 1 von X-Position und Wert 2 von Y-Position) gehen, beim zweiten mal zur 2. Koordinate und so weiter. Dazu erstellen wir eine neue Variable, den "Zähler". Vor der Schleife wird der Zähler auf eins gesetzt. In der Schleife geht der Geisterstift dann zum "Zählersten" Element aus X bzw. Y, also das Erste. Dann wird der Zähler um 1 erhöht, jetzt geht der Geisterstift wieder zum "Zählersten" Element aus X bwzw. Y, also das Zweite. Solange, bis alle Koordinaten durchlaufen wurden, dann ist die Schleife beendet. Jetzt muss man den Geisterstift noch anheben und zurück in die linke, untere Ecke bewegen.

Wenn Taste [w v] gedrückt
wische Malspuren weg
gehe zu x: ((1 v) Element von [X-Position v]) y: ((1 v) Element von [Y-Position v])
setze [Zähler v] auf (1)
schalte Stift ein
wiederhole (Länge von [X-Position v]) mal
gehe zu x: (Element (Zähler) von [X-Position v]) y: (Element (Zähler) von [Y-Position v])
ändere [Zähler v] um (1)
end
schalte Stift aus
gehe zu x: (-174) y: (-175)

Bemerke: Auch der Drehpunkt des Geisterstiftes muss auf dessen Spitze sein, damit er auch mit der Spitze malt!



Code zum Einbinden ins Forum:
[wiki=de:Aufzeichnen und Wiedergabe der Bewegung von Figuren]Aufzeichnen und Wiedergabe der Bewegung von Figuren[/wiki]