i

Eigene Funktionen

In diesem Abschnitt lernst Du, eigene Befehle (Funktionen) zu erschaffen. Wenn die eigenen Programme immer größer und größer werden, hilft Dir das, das Programm so zu gestalten, dass Du es nach einer Weile selbst noch verstehst und gezielt weiterentwickeln kannst.

Programm zum Ausprobieren

WIDTH = 800
HEIGHT = 600
TITLE = "Kollisionserkennung ändern"

meteorit = Actor("meteorit.png")
meteorit.x = 400
meteorit.y = 200


laser = Actor("laser_ohne_strahl.png")
laser.x=400
laser.y=300

def schuss():
    laser.image="laser_mit_strahl.png"
    if laser.colliderect(meteorit):
        meteorit.image="meteorit_explosion.png"


def on_key_down(key):
    if key==keys.RIGHT:
        laser.x=laser.x+10
    elif key==keys.LEFT:
        laser.x=laser.x-10
    else:
        schuss()


def draw():
    screen.blit("sterne.png",(0,0))
    laser.draw();
    meteorit.draw()

Eigentlich sollte sich das Programm genauso verhalten wie das im Abschnitt vorher. Was also soll der Vorteil sein?

Der Vorteil ist, dass unter else: nur noch ein Befehl, nämlich schuss() eingerückt steht. Und woher stammt der Befehl schuss()? Wir hatten ja schon ganz zu Anfang gesagt, dass def so genannte Funktionen definiert, etwa draw() oder on_key_down(). Bislang hatten wir auf diese Weise nur bestimmte Funktionen definiert, deren Namen bereits festgelegt waren.

Mit

 def schuss(): 

und den folgenden Zeilen haben wir uns nun eine Funktion schuss() konstruiert, die wir danach wie einen Python-Befehl verwenden können. Das Programm ist durch diese Änderung zwar länger geworden. Dafür ist die Funktion on_key_down() deutlich kürzer und übersichtlicher geworden und man sieht praktisch auf den ersten Blick, dass im else-Fall ein schuss ausgeführt werden soll.

Aufgabe 1: Andere Funktionsnamen

Man könnte irrtümlicherweise meinen, die Namen der Funktionen würden dem Computer auf magische Weise sagen, was er tun soll. Aber das stimmt nicht. Benenne die Funktion schuss() in bla(). Du musst natürlich auch die Funktion on_key_down() entsprechend anpassen. Teste das Programm dann nochmals.

Aufgabe 2: Absinken bei jedem Tastendruck

Ändere das Programm so, dass sich der Meteorit bei jedem Tastendruck um 10 Pixel nach unten bewegt. Definiere hierfür eine eigene Funktion absinken() und rufe sie in on_key_down() auf.

Suche

v
7.4.5.4
inf-schule.de/oop/spiele-python/entscheidungen/eigene-funktionen
inf-schule.de/7.4.5.4
inf-schule.de/@/page/vL4Em9Nhr7iCe6d0

Rückmeldung geben