Mit While zählen
Teil des Abschnitts Python in einem Spielfenster der Pygame-Journey von Coddy. Lektion 19 von 32.
Eine while-Schleife wird wiederholt, solange ihre Bedingung wahr ist. Verwende sie, wenn du nicht im Voraus weißt, wie oft die Schleife durchlaufen werden soll:
radius = 200
rings = 0
while radius > 10:
pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
radius = radius // 2
rings = rings + 1Der Radius halbiert sich jedes Mal: 200, 100, 50, 25, 12. // dividiert und lässt den Teil nach dem Komma weg, also ist 25 // 2 gleich 12. Dann ist der Wert 6, die Bedingung ist falsch und die Schleife endet nach 5 Ringen. rings zählt sie. Die fünfte Zahl im Aufruf von circle, 2, zeichnet eine 2 Pixel breite Kontur statt eines ausgefüllten Kreises.
Auch die Spielschleife ist eine while-Schleife, die so lange läuft, bis du das Fenster schließt. Eine while-Schleife innerhalb eines Frames muss schnell enden, sonst endet der Frame nie. Lässt du die Zeile weg, die den Radius halbiert, bleibt die Bedingung für immer wahr: Das Spiel friert ein, und Check meldet, dass das Spiel seinen ersten Frame nie erreicht hat.
Aufgabe
MittelErsetze im Zeichenteil den einzelnen Ring durch eine while-Schleife:
- Beginne mit
radius = 200undrings = 0. - Solange
radius > 10gilt: Zeichne einen Ringumriss in der Farbe(150, 190, 255), mit einer Breite von 2 und zentriert bei (320, 240); halbiere den Radius mit//; erhöheringsum 1. - Zeige nach der Schleife
f"Rings: {rings}"bei (20, 20) an. Die Ausgabe lautetRings: 5.
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.
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Ändere hier Dinge, einmal pro Frame.
screen.fill((20, 24, 48))
# Zeichne hier, nachdem der Bildschirm gefüllt wurde.
pygame.draw.circle(screen, (150, 190, 255), (320, 240), 200, 2)
text = font.render("Rings: 1", True, (230, 230, 240))
screen.blit(text, (20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Python in einem Spielfenster
4Schleifen, die zeichnen
Mit For wiederholenStart, Stopp und SchrittweiteDie Schleifenvariable verwendenEine Schleife in einer SchleifeMit While zählenÜbe selbstständig: Pygame-Playground