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.
Wyzwanie
ŚredniRozświetl cały budynek:
- Umieść pętlę okien w
for row in range(4):. - Ustaw
y = 210 + row * 60, aby rzędy znajdowały się na wysokościach y 210, 270, 330 i 390. - 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
4Pętle, które rysują
Powtarzaj za pomocą forPoczątek, koniec i krokUżywaj zmiennej pętliPętla w pętliLicz za pomocą whilePoćwicz samodzielnie: Edytor online Pygame