Menu
CoddyTech

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 + 1

Promień 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.

challenge icon

Wyzwanie

Średni

W części dotyczącej rysowania zastąp pojedynczy pierścień pętlą while:

  1. Zacznij od radius = 200 i rings = 0.
  2. 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ść rings o 1.
  3. Po pętli wyświetl f"Rings: {rings}" w punkcie (20, 20). Odczyt to Rings: 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()
quiz iconSprawdź się

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

Poćwicz samodzielnie: Edytor online Pygame