i

Durchlaufen von Listen

Das folgende Programm tut, wie Du gleich testen kann, genau das selbe wie das viel längere Programm auf der letzten Seite.

from random import *

WIDTH = 800
HEIGHT = 600
TITLE = "Flotte 1"


flotte = []

for i in range(3):
    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))
    for i in range(3):
        flotte[i].draw()

Erklärung

Die Zeile for i in range(3): bedeutet: Der Teil des Programms, der nach dieser Zeile folgt (und zwar nur der um ein paar Zeichen eingerückte Teil) wird jetzt mehrfach ausgeführt. Und zwar für ("for") alle (ganzzahligen) Werte für die Variable i zwischen 0 und 3, wobei die 3 selbst nicht mehr dazu gehört. Anders gesagt: Die Werte 0, 1 und 2.

Aufgabe 1: Mehr Raumschiffe

Ändere das Programm so ab, dass es nicht mehr nur drei Raumschiffe sind, sondern 5 Stück. Du solltest merken, dass das jetzt sehr einfach funktioniert.

Aufgabe 2: Alternative Formulierung

Die Funktion draw kann man auch anders schreiben; an der Funktion des Programms ändert sich nichts.

def draw():
    screen.blit("sterne.png",(0,0))
    for raumschiff in flotte:
           raumschiff.draw()

Verändere das Programm und teste es. Beschreibe, welchen Vorteil diese Schreibweise hat, wenn es darum geht, die Anzahl der Raumschiffe zu ändern.

Aufgabe 3: Gleichmäßige Bewegung aller Raumschiffe

Du hast in einem der vorhergehenden Abschnitte schon die Möglichkeit kennen gelernt, im Zeittakt ein einzelnes Raumschiff sich schrittweise in Richtung des unteren Bildschirmrandes zu bewegen.

Verändere jetzt das obige Programm so, dass sich im Takt alle Raumschiffe der Flotte gleichmäßig nach unten bewegen.

Aufgabe 4: Ungleichmäßige Bewegung aller Raumschiffe

Verändere jetzt das obige Programm so, dass sich im Takt zwar alle Raumschiffe der Flotte nach unten bewegen, aber nicht immer gleich weit. Die Strecke, die sich ein Raumschiff in einem Zeitschritt bewegt, soll zufällig sein (zwischen 5 und 20). Auf diese Weise wirken die Raumschiffe etwas "unabhängiger" von einander.

Aufgabe 5: Flotte und Laserkanone

In einem der vorhergehenden Abschnitte wurde mit der Laserkanone auf ein einzelnes Raumschiff geschossen, das sich Richtung unterer Bildschirmrand bewegte. Schreibe nun ein Programm, das es ermöglicht, auf eine ganze Flotte von Raumschiffen zu schießen. Bei einem Treffer soll das getroffene Raumschiff (oder die getroffenen Raumschiffe) explodieren.

Suche

v
7.4.8.3
dev.inf-schule.de/oop/spiele-python/viele-objekte/Durchlaufen_von_Listen
dev.inf-schule.de/7.4.8.3

Rückmeldung geben