2.9 Listen


In diesem Kapitel soll es schneien. Im ersten Beispiel soll eine einzelne Schneeflocke animiert auf der Zeichenfläche vom Himmel fallen. Die Position der Schneeflocke wird mit einer x-Koordinate und einer y-Koordinate gespeichert:

  • Die y-Koordinate wird auf den Wert 0 gesetzt, damit die Schneeflocke ganz oben startet.
  • Als x-Koordinate wird die Mitte der Zeichenfläche gesetzt.

Die Anweisungen im Block "draw" werden in jedem Frame (also mehr als 30 Mal pro Sekunde) ausgeführt. Damit der Eindruck einer Bewegung entsteht, wird die y-Koordinate in jedem Frame um 1 vergrößert, die Schneeflocke fällt also animiert nach unten. Um die Bewegung etwas realistischer aussehen zu lassen, wird die x-Koordinate in jedem Frame zufällig zwischen -0.3 und 0.3 verändert.

Laden Sie das Programm Eine Schneeflocke und sehen Sie sich den Aufbau genau an.

Es ist mühsam für jede Schneeflocke eigene Variablen für die x- und y-Koordinate festzulegen. Viel einfacher wäre es, wenn die x- und y-Koordinate von jeder Schneeflocke in einer einzigen Variablen gespeichert werden könnten. Genau für diesen Zweck gibt es die Datenstruktur Liste (oder auch Array oder Reihung).

Für die x-Koordinate der Schneeflocken wird die Liste schneeflockeXKoord angelegt. Für die y-Koordinate der Schneeflocken wird die Liste schneeflockeYKoord angelegt.

Wenn ein neuer Frame erzeugt wird, wird ein neues Koordinatenpaar für eine einzige neue Schneeflocke erzeugt. Dabei wird die y-Koordinate auf 0 gesetzt, damit die Schneeflocke oben startet. Die x-Koordinate wird auf einen Zufallswert zwischen 0 und der Breite der Zeichenfläche gesetzt. Da die Methode "draw" sehr oft pro Sekunde ausgeführt wird (mehr als 30 Mal), werden in jeder Sekunde viele neue Schneeflocken erzeugt.

Die Einträge in einer Liste werden durchnummeriert (jeder Eintrag hat einen bestimmten Index). Die x-Koordinate, welche an der gleichen Stelle mit dem gleichen Index in der Liste gespeichert ist wie die y-Koordinate in der anderen Liste, gehören zusammen und bilden die Koordinate einer Schneeflocke.

Sobald eine Schneeflocke den unteren Rand der Zeichenfläche erreicht hat, wird sie gelöscht, damit der Speicher des Computers nicht voll läuft und die Animation ins Stocken gerät. Dazu wird das letzte Element z.B. aus der Liste schneeflockeYKoord genommen und geprüft, ob der Wert größer ist als die Höhe der Zeichenfläche. Wenn die Bedingung erfüllt ist, werden die letzten Koordinaten aus beiden Listen gelöscht, denn diese zusammen bilden ja die Koordinate der ältesten Schneeflocke.

Schließlich sollen die Schneeflocken gezeichnet werden. Dazu durchläuft man mit Hilfe einer Schleife beide Koordinaten-Listen von 1 bis zum Ende der Liste:

  • Für den aktuellen Index wird die y-Koordinate um 1 vergrößert, damit die Schneeflocke in jedem Frame einen Pixel nach unten fällt und der Wert der y-Koordinate in der Liste wird überschrieben.
  • Für den aktuellen Index wird die x-Koordinate um einen Wert zwischen -0.3 und 0.3 verändert, damit die Bewegung etwas lebendiger aussieht und der Wert der x-Koordinate in der Liste wird überschrieben.

Damit können die Schneeflocken fallen...

Laden Sie das Programm Es schneit und sehen Sie sich den Aufbau genau an.

Im nächsten Beispiel werden Worte in einer Liste gespeichert und an zufälligen Positionen mit einer zufälligen Farbe ausgegeben.

Dazu werden zuerst 10 Worte des Lorem-Ipsum-Generators in einer Liste gespeichert und damit die Texte sich nicht zu schnell ändern, wird die Framerate auf 1 Frame pro Sekunde gesetzt:

Die Liste wird dann mit Hilfe einer Schleife durchlaufen und jedes eingetrage Wort wird mit einer zufälligen Farbe an einer zufälligen Position auf dem Bildschirm ausgegeben.

Laden Sie das Programm WortArt und sehen Sie sich den Aufbau genau an.


  • Erstellen Sie ein kleines Projekt, in welchem Sie Daten in einer Liste speichern und diese Daten dann nutzen.

Lassen Sie Ihrer Lehrkraft in der vereinbarten Weise den Programm-Code und eine Bildschirmkopie des Programms zukommen. Dafür gibt es die vereinbarte Menge an XPs.