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

Listen

Die Listenblöcke aus Scratch 2.0

Listen (manchmal auch Felder, Feldvariablen oder Arrays) sind eine Art kompakte Ansammlung von Variablen. Sie wurden in Scratch 1.3 eingeführt und sind besonders nützlich für Programme, die eine große, unbestimmte Anzahl an Werten abspeichern und dann wiederverwenden müssen. Listen können wie Variablen global und lokal, d. h. nur auf ein bestimmtes Objekt bezogen, definiert werden.

Blöcke und Geschichte

Hauptartikel: Listen-Blöcke

Es gibt insgesamt 10 verschiedenartige Blöcke für Listen. Sie sind sind unter Daten zu finden. In den Vorabversionen von Scratch 2.0 waren Cloud Listen möglich. Da sie jedoch ein zu hohes Sicherheitsrisiko darstellen, wurden sie vorerst wieder entfernt. Allerdings bleiben zwei in Scratch 2.0 eingeführte Neuerungen: die Möglichkeit, Listen zu zeigen und zu verstecken.

Bei dem folgenden Projekt handelt es sich um eine Simulation, die die Funktionsweise der Listen in Scratch nachstellt. Wenn du dir noch nicht ganz sicher bist, wie das mit jedem Block genau funktioniert, kannst du hier ganz einfach herumprobieren. Die Katze wird dir dabei helfen.




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


Welche Vorteile bringt mir eine Liste im Gegensatz zu Variablen?

  • Listen können unendlich viele Elemente fassen
  • Listen haben eine feste Reihenfolge an Elementen
  • Listen können als .txt Datei exportiert und importiert werden

Anwendungsbeispiele

1. Auflistungen

Eine Highscoreliste

Durch die gut strukturierte Reihenfolge der Elemente und der Möglichkeit, Listen durch eine Checkbox anzeigen zu lassen, kann man Listen gut für Auflistungen, wie beispielsweise eine Highscoreliste verwenden.

2. Speicherung von "Items"

In Adventure Spielen muss man oft irgendwelche Sachen aufsammeln. Perfekt geeignet für eine derartige Sammlung der Items stellt eine Liste an einem Bildschirmrand da.

3. Externe Speicherung von Daten

Man kann den Inhalt einer Liste per Rechtsklick auf die angezeigte Liste als .txt (Text) Datei exportieren und importieren. Man kann somit Welten als Zahlenabfolgen codieren und sie zwischen verschiedenen Fenstern und sogar Computern transportieren. Das funktioniert allerdings nur offline.

4. Speicherung von Daten mit dem Projekt

Mit der Möglichkeit, Projekte online zu speichern und zu editieren, kann man man auch Informationen in Listen online abspeichern. Wenn man die Inhalte von Listen während des Programmlaufs verändert hat und diesen neuen Stand festhalten will, braucht man die Liste nicht wie oben beschrieben als Textdatei zu exportieren, sondern kann einfach in den Editiermodus wechseln und das Projekt einschließlich der Listeninhalte dann speichern. Interessant kann das z. B. für Vokabellernprogramme sein, wenn man Lernstatus und letzen Aufruf von Vokabeln in Listen festhalten will.

Im Gegensatz zu einer Programmänderung registriert Scratch die Änderung eines Listeninhalts nicht automatisch. Man muss das Speichern also manuell durchführen.

Dieses Programm speichert in der Liste sowohl die Art des Gebäudes, als auch die verschlüsselte Position. Das wird beim Aufbauprozess aufgegriffen und durch ein kompliziertes Programm entschlüsselt.

5. Speicherplatz für kompliziertere Aufbau- und Abbauvorgänge

Erfahrenere Scratcher benutzen Listen auch gerne als eine Art Speicherplatz für Informationen. Das wäre im Gegensatz zu Punkt 1 auch mit Variablen einigermaßen möglich, dafür allerdings deutlich umständlicher, unübersichtlicher und würde die Anzahl der Speicherungen, da das Programm keine Variablen automatisch erstellen kann, begrenzen. Dazu muss die Liste natürlich nicht angezeigt sein. Um die Liste auszulesen braucht man meist die String Blöcke aus der Kategorie "Operatoren".

6. Anzeige für TBGs und Kommandozeilenprogramme

Beliebt sind Listen auch als schnelle und praktische Möglichkeit um TBGs ("Text Based Games") und Kommandozeilensysteme zu machen. Eng damit verbunden sind die Frage- und String Blöcke.

7. Listenspiele

Mit der Zeit haben sich die vom Aussehen und dem Gameplay her sehr experimentellen Listenspiele zu einer kleinen Subkultur entwickelt. Bei derartigen Projekten werden Listen von ihren eigentlichen Funktionen zweckentfremdet und dann für eine Sache verwendet, die zwar meist mit anderen Mitteln einfacher herzustellen währe, dafür aber origineller ist. Ein Beispiel dafür findet sich unten.

Cloud Listen

Später in Scratch 2.0 wird vermutlich die Cloud Listen wieder eingeführt. Mit diesen wird man in Zukunft die Möglichkeit haben, Informationen persistent im Internet (der Cloud) abzuspeichern.

Cloud Listen emulieren

Man kann diese Cloud Listen auch mit Cloud variablen emulieren. Hier ist ein Beispiel für ein Highscore-system.(@ ist das zeichen für eine Cloud variable.)

Wenn gf angeklickt
setze[Zwischenablage 1 v] auf[0]
setze[Zwischenablage 2 v] auf[0]
wiederhole fortlaufend
falls ((dein Score) > (@Score 1))
setze[Zwischenablage 1 v] auf (@Score 1)
setze[@Score 1 v] auf (dein Score)
setze[Zwischenablage 2 v] auf (@Score 2)
setze[@Score 2 v] auf (Zwischenablage 1)
setze[@Score 3 v] auf (Zwischenablage 2)
ende
ende

Wenn gf angeklickt
setze[Zwischenablage 1 v] auf[0]
setze[Zwischenablage 2 v] auf[0]
wiederhole fortlaufend
falls (((dein Score) > (@Score 2)) und ((dein Score) < (@Score 1)))
setze[Zwischenablage 1 v] auf (@Score 2)
setze[@Score 2 v] auf (dein Score)
setze[Zwischenablage 2 v] auf (@Score 3)
setze[@Score 3 v] auf (Zwischenablage 1)
ende
ende

Wenn gf angeklickt
setze[Zwischenablage 1 v] auf[0]
setze[Zwischenablage 2 v] auf[0]
wiederhole fortlaufend
falls (((dein Score) < (@Score 2)) und (((dein Score) < (@Score 1)) und ((dein Score) > (@Score 3))
setze[@Score 3 v] auf (dein Score)
ende
ende

Arrays

Die Entsprechung zu einer Liste in anderen Programmiersprachen nennt sich "Array". Sie ähnelt der Liste zwar, bietet aber grundsätzlich noch die Funktion der Mehrdimensionalität. Das heißt konkret, dass man bestimmte Einträge den anderen zuordnen kann. Visualisiert sähe das dann so ähnlich aus, wie eine Tabelle. Mann hat die Funktion bei den normalen, eindimensionalen Listen nicht, kann aber die Funktionsweise eines Arrays durch Slashes (Querstriche, also "/") als Trennungszeichen (wie oben im Bild mit der Verrechnungsliste) nachstellen, was dem Programmierer einige Vorteile bringt.

Listen exportieren und importieren

Klickt man auf die auf der Bühne angezeigte Liste und hält dabei die Shift-Taste gedrückt, so öffnet sich ein Menü aus dem man wählen kann, ob man Listen importieren oder exportieren möchte. Beim Exportieren werden die Elemente der Liste in einer .txt-Datei auf dem Computer gespeichert, wobei nach jedem Element eine neue Zeile begonnen wird. Beim Importieren überschreiben Dateien, die dem gleichen Schema folgen (neue Zeile pro Listenelement), vorzugsweise im .txt-Format, die Elemente der vorhandenen Liste.

Exportierte Listen verwenden das UNICODE-Format (UTF-8). Wenn man die Listen nach Export weiterverarbeiten will, z. B. in einer Tabellenkalkulation, muss man diese Einstellung beim Import anwenden, sonst kommen z. B. statt der deutschen Umlaute irgendwelche Ersatzzeichen.

Projekte, die Listen verwenden (Englisch)

Eine kleine Auflistung von Projekten, die mit der Listenfunktion arbeiten. Die Projektart beziehungsweise die Nutzung der Listenfunktion wird hier in Klammern angegeben. Dass zwei der Projekte "Adventure" heißen, ist hier reiner Zufall.

Listen Tutorials und Hilfen (Englisch)

Introvideos

Siehe auch



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