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.
Aufgabe
MittelLass den Aufrufer den Stern platzieren:
- Ändere die Definition zu
def draw_star(x, y):und zeichne um (x, y): die Linien vonx - 10bisx + 10und vony - 10bisy + 10, den Punkt bei(x, y). - 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