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 Operation "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.
