Lernpfad:Scratch für Fortgeschrittene/Informationen speichern und abrufen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen

Bei vielen Projekten müssen bestimmte Informationen aus unterschiedlichen Gründen gespeichert werden. Die häufigsten Gründe sind:

  • Der Benutzer muss eine Eingabe machen, die gespeichert werden muss.
  • Eine Information ist nicht fest, sondern ändert sich im Laufe der Zeit.
  • Ein Wert wird an mehreren Stellen verwendet.

Wann immer eine Information gespeichert und wieder abgerufen werden soll, werden in Scratch (und anderen Programmiersprachen) Variablen angelegt. Im folgenden werden die Grundlagen von Variablen in Scratch beschrieben. Weiter unten findest du Beispiele zu den drei oben genannten Gründen, Informationen zu speichern.

Variablen in Scratch

In Scratch können Variablen in der Kategorie Daten erstellt und verwendet werden. In einem neuen Projekt gibt es noch keine Variablen und in der Kategorie wird nur der Button Neue Variable angezeigt. Durch einen Klick kann man eine neue Variable erstellen. Dazu gibt man einen möglichst passenden Namen ein, der einem auch später noch verrät, welche Informationen in der Variablen gespeichert sind (also zum Beispiel nicht a oder xyz, sondern tempo, eingabe oder level). Dann kann man auswählen, ob die Variable für das gesamte Projekt (global) oder nur für die aktuelle Figur (lokal) gelten soll. Hat man die Variable erstellt, wird sie oben in der Kategorie angezeigt, sowie vier neue Anweisungen.

Eine globale Variable bedeutet, dass alle Figuren und auch die Bühne auf die Information in dieser Variablen zugreifen kann. Ein Beispiel wäre eine Variable (level), in der in einem Spiel das aktuelle Level gespeichert ist. Diese Information ist für alle Figuren gleich.

Eine lokale Variable ist nur für eine Figur gültig. Das bedeutet, dass jede Figur einen eigenen Wert für sich selber in dieser Variablen speichern kann. Lokale Variablen werden auch nur in der Kategorie Daten angezeigt, wenn die zugehörige Figur ausgewählt ist. Ein Beispiel wäre eine Variable (lebenspunkte), die für eine Figur ihre noch verbleibenden Lebenspunkt enthält. Jede Figur hat im Laufe des Spiels einen anderen Wert für die Lebenspunkte.

Beim Erstellen einer Variablen sollte man sich gut überlegen, ob die Variable global oder lokal sein soll.

Der aktuelle Wert einer Variablen kann in der Bühne angezeigt werden, indem in der Kategorie Daten der Haken neben der Kapsel der Variablen gesetzt wird. Beim Erstellen einer neuen Variablen ist das in der Regel der Fall.

Zwei Variablen in Scratch. Eine wird auf der Bühne angezeigt, die andere nicht.

Variablen benutzen

Der Wert einer Variablen kann in Skripten verwendet werden, indem die entsprechende Kapsel oben aus der Kategorie Daten in den Skriptbereich gezogen wird. Dort kann sie anstelle eines anderen Wertes in Anweisungen eingebaut werden. Zum Beispiel könnte man so anstatt gehe (10)er-Schritt die Anweisung gehe (Schrittweite)er-Schritt erstellen.

In der Kategorie Daten gibt es außerdem vier Anweisungen, um den Wert einer Variablen zu ändern und deren aktuellen Wert auf der Bühne anzuzeigen oder zu verstecken, ohne auf den Haken neben der Variablen klicken zu müssen.

Verändern von Variablen

setze [Schrittweite v] auf (10)
Speichert einen neuen Wert in einer Variablen. In einer Variablen können beliebige Werte (Zahlen, Texte) gespeichert werden.
ändere [Schrittweite v] um (-1)
Ändert den Wert einer Variablen um den angegebenen Wert. Dies ist nur bei Variablen, in denen Zahlen gespeichert sind, sinnvoll.

Variablen anzeigen und verstecken

zeige Variable [Scrittweite v]
Zeigt den aktuellen Wert der Variablen auf der Bühne an.
verstecke Variable [Scrittweite v]
Entfernt den Wert der Variablen von der Bühne.

Beispiele

Beispiel 1: Der Benutzer muss eine Eingabe machen, die gespeichert werden muss.

Beispiel 2: Eine Information ist nicht fest, sondern ändert sich im Laufe der Zeit.

Wenn die grüne Flagge angeklickt
gehe zu x:(-180) y:(0)
setze Richtung auf (Zufallszahl von (45) bis (135))
setze [tempo v] auf (30)
wiederhole bis <(tempo :: variables) < [0]>
  gehe (tempo ::variables)er-Schritt
  ändere [tempo v] um (-1)
  pralle vom Rand ab
end
Beispiel für die Veränderung einer Variablen. Die Geschwindigkeit der Katze wird immer kleiner, bis sie stehen bleibt.

Beispiel 3: Ein Wert wird an mehreren Stellen verwendet

Wenn ein Wert an mehreren Stellen in einem Skript oder sogar in mehreren Figuren verwendet werden soll, dann bietet es sich oft an, diesen Wert nicht direkt in die Anweisungen zu schreiben, sondern ihn in einer Variablen zu speichern. Auf diese Weise kann der Wert sehr einfach verändert werden, ohne ihn in jeder Anweisung einzeln anpassen zu müssen.

Beispielsweise kann man eine Figur animieren, indem durch die Kostüme der Figur gewechselt wird. Um die Geschwindigkeit der Animation zu steuern baut man zwischen den Kostümwechseln eine Verzögerung ein.

nächstes Kostüm
warte (0.2) Sek.
nächstes Kostüm
warte (0.2) Sek.
nächstes Kostüm
warte (0.2) Sek.
nächstes Kostüm

Merkt man erst später, dass die Animation zu langsam oder schnell abläuft, dann müsste man in allen drei warte (0.2) Sek. Anweisungen den Wert verändern.

Statt dessen könnte man eine neue Variable (wartezeit) anlegen und verwenden.

setze [wartezeit v] auf (0.1)
nächstes Kostüm
warte (wartezeit) Sek.
nächstes Kostüm
warte (wartezeit) Sek.
nächstes Kostüm
warte (wartezeit) Sek.
nächstes Kostüm

Nun kann mit den Wert für die Wartezeit beliebig experimentiert werden, bis die Animation in der richtigen Geschwindigkeit abläuft.


Ein Beispiel, bei dem ein Wert in verschiedenen Figuren verwendet wird, ist das folgende Projekt. Es enthält einen Button und mehrere Bälle. Jeder Ball fliegt über die Bühne und prallt von den Rändern ab. Die Geschwindigkeit (also die Weite der Schritte) wird von der Variablen (tempo :: variables) festgelegt. Jeder klick auf den Button erhöht den Wert dieser Variablen um 2 und beschleunigt so alle Bälle gleichzeitig immer mehr.


Das Skript der Bälle sieht so aus:
Wenn die grüne Flagge angeklickt
setze Richtung auf (Zufallszahl von (0) bis (360))
wiederhole fortlaufend
  gehe (tempo :: variables)er-Schritt
  pralle vom Rand ab
end
Das Skript des Buttons sieht so aus:
Wenn die grüne Flagge angeklickt
setze [tempo v] auf (1)

Wenn ich angeklickt werde
ändere [tempo v] um (2)
Beispiel zur Verwendung einer Variablen in mehreren Figuren zur Steuerung der Geschwindigkeit in Scratch 2.0.

Beispiel 4: Ein Wert verändert sich fortlaufend

Manchmal muss man sich einen Wert, der sich ständig verändert, zu einem bestimmten Zeitpunkt merken, obwohl sich der Wert eigentlich weiter verändert. Beispielsweise die in Scratch eingebaute Stoppuhr, oder die x-Position eines sich bewegenden Objektes.

Dazu eigenen sich Variablen, denn in ihnen kann zu jederzeit der aktuelle Wert abgelegt und später wieder abgerufen werden. Möchtest du zum Beispiel am Ende des Spiels die Spielzeit als Highscore anzeigen, dann müsstest du die Stoppuhr zu Beginn des Spiels mit setze Stoppuhr zurück zurücksetzen. Dann erstellte du eine Variable (highscore), in der am Ende die Zeit gespeichert wird.

Wenn ich [Spiel startet v] empfange
setze Stoppuhr zurück

Wenn ich [Spiel zuende v] empfange
  setze [highscore v] auf (Stoppuhr)