Menu
CoddyTech

Eine Schleife in einer Schleife

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

Der Rumpf einer Schleife kann eine weitere Schleife enthalten. Die innere Schleife wird bei jedem Durchlauf der äußeren vollständig ausgeführt:

for row in range(4):
    for col in range(8):
        x = 130 + col * 50
        y = 210 + row * 60
        pygame.draw.rect(screen, (255, 210, 90), (x, y, 20, 20))

Für row 0 zeichnet die innere Schleife oben 8 Fenster. Dann wird row zu 1, und die innere Schleife zeichnet 8 weitere, 60 Pixel tiefer. Vier Reihen mit jeweils acht Fenstern ergeben 32 Fenster. Ein Raster hat immer diese Form: eine Schleife für die Reihen, eine für die Spalten.

pygame.draw.rect(screen, colour, (x, y, width, height)) zeichnet ein ausgefülltes Rechteck mit der oberen linken Ecke bei (x, y).

Achte auf die Einrückungen: Das innere for ist gegenüber der äußeren Schleife eingerückt, und sein Rumpf ist nochmals eingerückt, um 8 Leerzeichen gegenüber der äußeren Schleife.

challenge icon

Aufgabe

Mittel

Beleuchte das ganze Gebäude:

  1. Umschließe die Fensterschleife mit for row in range(4):.
  2. Setze y = 210 + row * 60, damit die Reihen bei y 210, 270, 330 und 390 liegen.
  3. Du erhältst 32 Fenster: 4 Reihen mit je 8 Fenstern.

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.

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.
    pygame.draw.rect(screen, (40, 44, 70), (100, 180, 440, 300))
    for col in range(8):
        x = 130 + col * 50
        y = 210
        pygame.draw.rect(screen, (255, 210, 90), (x, y, 20, 20))

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

pygame.quit()

Alle Lektionen in Python in einem Spielfenster

Übe selbstständig: Pygame-Playground