Listen von Objekten
Programm zum Ausprobieren
Teste das folgende Programm.
from random import *
WIDTH = 800
HEIGHT = 600
TITLE = "Flotte 1"
flotte = []
raumschiff = Actor("raumschiff_gruen.png")
raumschiff.x = randrange(WIDTH)
raumschiff.y = randrange(HEIGHT // 2)
raumschiff.angle=-90
flotte.append(raumschiff)
raumschiff = Actor("raumschiff_gruen.png")
raumschiff.x = randrange(WIDTH)
raumschiff.y = randrange(HEIGHT // 2)
raumschiff.angle=-90
flotte.append(raumschiff)
raumschiff = Actor("raumschiff_gruen.png")
raumschiff.x = randrange(WIDTH)
raumschiff.y = randrange(HEIGHT // 2)
raumschiff.angle=-90
flotte.append(raumschiff)
def draw():
screen.blit("sterne.png",(0,0))
flotte[0].draw()
flotte[1].draw()
flotte[2].draw()
Erklärung
Zeile 8 erzeugt eine leere Liste von Raumschiffen, die den Namen
flotte
erhält. In den folgenden Zeilen wird jeweils ein
neues Raumschiff erzeugt und dann an die Liste angehängt.
Beim Zeichnen der drei Raumschiffe wird auf die einzelnen Raumschiffe
zugegriffen, indem hinter dem Namen der Liste (flotte
) 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 Raumschiffe flotte1, flotte2,
flotte3
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 Raumschiffe
Ändere das Programm so ab, dass es nicht mehr nur drei Raumschiffe sind, sondern 5 Stück.