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"


schwarm = []

for i in range(3):
    meteorit = Actor("meteorit.png")
    meteorit.x = randrange(WIDTH)
    meteorit.y = randrange(HEIGHT // 2)
    schwarm.append(meteorit)


def draw():
    screen.blit("sterne.png",(0,0))
    for i in range(3):
        schwarm[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 Meteoriten

Ändere das Programm so ab, dass es nicht mehr nur drei Meteoriten 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 meteorit in schwarm:
           meteorit.draw()

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

Aufgabe 3: Gleichmäßige Bewegung aller Meteoriten

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

Verändere jetzt das obige Programm so, dass sich im Takt alle Meteoriten des Schwarms gleichmäßig nach unten bewegen.

Aufgabe 4: Ungleichmäßige Bewegung aller Meteoriten

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

Aufgabe 5: Flotte und Laserkanone

In einem der vorhergehenden Abschnitte wurde mit der Laserkanone auf einen einzelnen Meteoriten geschossen, der sich Richtung unterer Bildschirmrand bewegte. Schreibe nun ein Programm, das es ermöglicht, auf einen ganzen Schwarm von Meteoriten zu schießen. Bei einem Treffer soll der getroffene Meteorit (oder die getroffenen Meteoriten) explodieren.

Suche

v
7.4.8.3
inf-schule.de/oop/spiele-python/viele-objekte/Durchlaufen_von_Listen
inf-schule.de/7.4.8.3
inf-schule.de/@/page/nIaA8ReBqrvP9rOS

Rückmeldung geben