i

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.

Suche

v
7.4.8.1
dev.inf-schule.de/oop/spiele-python/viele-objekte/Listen_von_Objekten
dev.inf-schule.de/7.4.8.1

Rückmeldung geben