Menu
CoddyTech

Pętla w pętli

Część sekcji Python w oknie gry ścieżki Pygame w Coddy. Lekcja 18 z 32.

Treść pętli może zawierać kolejną pętlę. Pętla wewnętrzna wykonuje się w całości podczas każdego przebiegu pętli zewnętrznej:

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))

Dla row równego 0 pętla wewnętrzna rysuje 8 okien w górnym rzędzie. Następnie row przyjmuje wartość 1, a pętla wewnętrzna rysuje kolejnych 8 okien, 60 pikseli niżej. Cztery rzędy po osiem okien dają 32 okna. Siatka zawsze ma taką strukturę: jedna pętla dla rzędów, druga dla kolumn.

pygame.draw.rect(screen, colour, (x, y, width, height)) rysuje wypełniony prostokąt, którego lewy górny róg znajduje się w punkcie (x, y).

Zwróć uwagę na wcięcia: wewnętrzna pętla for jest wcięta względem zewnętrznej, a jej treść jest wcięta ponownie, o 8 spacji względem pętli zewnętrznej.

challenge icon

Wyzwanie

Średni

Rozświetl cały budynek:

  1. Umieść pętlę okien w for row in range(4):.
  2. Ustaw y = 210 + row * 60, aby rzędy znajdowały się na wysokościach y 210, 270, 330 i 390.
  3. Otrzymasz 32 okna: 4 rzędy po 8.

Spróbuj swoich sił

import pygame

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

# Skonfiguruj wszystko tutaj, przed pętlą gry.

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

    # Wprowadzaj zmiany tutaj, raz na klatkę.

    screen.fill((20, 24, 48))
    # Rysuj tutaj, po wypełnieniu tła.
    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()

Wszystkie lekcje w sekcji Python w oknie gry

Poćwicz samodzielnie: Edytor online Pygame