Listen von Objekten
Programm zum Ausprobieren
Teste das folgende Programm.
from random import *
WIDTH = 800
HEIGHT = 600
TITLE = "Meteoritenschwarm 1"
schwarm = []
meteorit = Actor("meteorit.png")
meteorit.x = randrange(WIDTH)
meteorit.y = randrange(HEIGHT // 2)
schwarm.append(meteorit)
meteorit = Actor("meteorit.png")
meteorit.x = randrange(WIDTH)
meteorit.y = randrange(HEIGHT // 2)
schwarm.append(meteorit)
meteorit = Actor("meteorit.png")
meteorit.x = randrange(WIDTH)
meteorit.y = randrange(HEIGHT // 2)
schwarm.append(meteorit)
def draw():
screen.blit("sterne.png",(0,0))
schwarm[0].draw()
schwarm[1].draw()
schwarm[2].draw()
Erklärung
Zeile 8 erzeugt eine leere Liste von Meteoriten, die den Namen
schwarm
erhält. In den folgenden Zeilen wird jeweils ein
neuer Meteorit erzeugt und dann an die Liste angehängt.
Beim Zeichnen der drei Meteoriten wird auf die einzelnen Meteoriten
zugegriffen, indem hinter dem Namen der Liste (schwarm
) in
eckigen Klammern die Nummer auf der Liste genannt wird. Während man im
Alltag häufig Listen mit "1,2, usw ..." nummeriert, beginnt die
Nummerierung einer Liste in Python immer bei 0.
Der Sinn des Ganzen
Man könnte jetzt richtigerweise einwenden:
"Wozu der Aufwand mit append
und den eckigen Klammern?
Kann man nicht einfach direkt die Meteoriten schwarm, schwarm2,
schwarm3
nennen? Beim obigen Code würde das sogar noch Zeilen sparen.
Im nächsten Abschnitt werden wir jedoch sehen, wie man das Programm, das mit Listen funktioniert, sehr viel kürzer hinschreiben kann. Denn im obigen Programm sieht man, dass sich vieles einfach mehr oder weniger wiederholt.
Aufgabe 1: Wiederholungen finden
Suche im Programmtext Folgen von Befehlen, die mehrfach auftreten, evtl. mit nur sehr kleinen Änderungen.
Aufgabe 2: Mehr Meteoriten
Ändere das Programm so ab, dass es nicht mehr nur drei Meteortiten sind, sondern 5 Stück.