Menu
CoddyTech

Parameter

Teil des Abschnitts Python in einem Spielfenster der Pygame-Journey von Coddy. Lektion 21 von 32.

Eine Funktion, die immer bei (320, 240) zeichnet, ist wenig nützlich. Parameter lassen den Aufrufer die Auswahl treffen. Benenne sie in den Klammern von def und verwende sie im Funktionskörper wie Variablen:

def draw_star(x, y):
    pygame.draw.line(screen, (255, 240, 200), (x - 10, y), (x + 10, y), 2)
    pygame.draw.line(screen, (255, 240, 200), (x, y - 10), (x, y + 10), 2)
    pygame.draw.circle(screen, (255, 240, 200), (x, y), 4)

Jeder Aufruf übergibt Werte, die Argumente, in derselben Reihenfolge: draw_star(120, 100) führt den Funktionskörper mit x 120 und y 100 aus. draw_star(520, 90) führt ihn erneut mit anderen Werten aus. Eine Definition, so viele Sterne, wie du aufrufst.

Die Parameter existieren nur innerhalb der Funktion, während sie ausgeführt wird. Außerhalb der Funktion bedeuten x und y nichts oder stehen für das, was du dort unter diesen Namen gespeichert hast.

challenge icon

Aufgabe

Mittel

Lass den Aufrufer den Stern platzieren:

  1. Ändere die Definition zu def draw_star(x, y): und zeichne um (x, y): die Linien von x - 10 bis x + 10 und von y - 10 bis y + 10, den Punkt bei (x, y).
  2. Rufe die Funktion dreimal auf: bei (120, 100), (320, 180) und (520, 90).

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Richte hier alles ein, bevor die Spielschleife beginnt.
def draw_star():
    pygame.draw.line(screen, (255, 240, 200), (310, 240), (330, 240), 2)
    pygame.draw.line(screen, (255, 240, 200), (320, 230), (320, 250), 2)
    pygame.draw.circle(screen, (255, 240, 200), (320, 240), 4)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Ändere hier die Dinge einmal pro Frame.

    screen.fill((20, 24, 48))
    # Zeichne hier, nachdem der Bildschirm gefüllt wurde.
    draw_star()

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Python in einem Spielfenster

Übe selbstständig: Pygame-Playground