i

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.

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
dev.inf-schule.de/@/page/oCUiJTLH8MVSfFoz

Rückmeldung geben