Licz za pomocą while
Część sekcji Python w oknie gry ścieżki Pygame w Coddy. Lekcja 19 z 32.
Pętla while powtarza się tak długo, jak jej warunek jest prawdziwy. Używaj jej, gdy nie wiesz z góry, ile razy trzeba wykonać obieg:
radius = 200
rings = 0
while radius > 10:
pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
radius = radius // 2
rings = rings + 1Promień zmniejsza się o połowę za każdym razem: 200, 100, 50, 25, 12. Operator // dzieli i odrzuca część po przecinku, więc 25 // 2 to 12. Potem otrzymujemy 6, warunek jest fałszywy i pętla kończy się po 5 okręgach. Zmienna rings je zlicza. Piąty argument w wywołaniu funkcji rysującej okrąg, 2, rysuje obrys o szerokości 2 pikseli zamiast wypełnionego okręgu.
Pętla gry również jest pętlą while — działa do momentu zamknięcia okna. Pętla while wewnątrz klatki musi szybko się kończyć, bo inaczej klatka nigdy się nie zakończy. Jeśli pominiesz wiersz zmniejszający promień o połowę, warunek pozostanie prawdziwy na zawsze: gra się zawiesi, a Check poinformuje, że gra nigdy nie dotarła do pierwszej klatki.
Wyzwanie
ŚredniW części dotyczącej rysowania zastąp pojedynczy pierścień pętlą while:
- Zacznij od
radius = 200irings = 0. - Gdy
radius > 10: narysuj pierścień w formie obrysu w kolorze(150, 190, 255), o szerokości 2, wyśrodkowany w punkcie (320, 240); podziel promień przez 2 za pomocą//; zwiększ wartośćringso 1. - Po pętli wyświetl
f"Rings: {rings}"w punkcie (20, 20). Odczyt toRings: 5.
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()
# Przygotuj wszystko tutaj, przed pętlą gry.
font = pygame.font.Font(None, 36)
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 ekranu.
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()
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
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