Contare con while
Fa parte della sezione Python in una finestra di gioco del percorso Pygame di Coddy. Lezione 19 di 32.
Un ciclo while si ripete finché la sua condizione è vera. Usalo quando non sai in anticipo quante volte ripetere il ciclo:
radius = 200
rings = 0
while radius > 10:
pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
radius = radius // 2
rings = rings + 1Il raggio si dimezza ogni volta: 200, 100, 50, 25, 12. // divide e scarta la parte dopo la virgola, quindi 25 // 2 è 12. Poi diventa 6, la condizione è falsa e il ciclo termina dopo 5 anelli. rings li conta. Il quinto numero nella chiamata circle, 2, disegna un contorno largo 2 pixel invece di un cerchio pieno.
Anche il ciclo di gioco è un ciclo while: continua finché non chiudi la finestra. Un ciclo while all'interno di un frame deve terminare rapidamente, altrimenti il frame non finisce mai. Se ometti la riga che dimezza il raggio, la condizione rimane vera per sempre: il gioco si blocca e Check indica che il gioco non ha mai raggiunto il primo frame.
Sfida
MedioNella parte di disegno, sostituisci l’anello singolo con un ciclo while:
- Inizia con
radius = 200erings = 0. - Finché
radius > 10: disegna un anello di contorno di colore(150, 190, 255), larghezza 2, centrato in (320, 240); dimezza il raggio con//; aggiungi 1 arings. - Dopo il ciclo, mostra
f"Rings: {rings}"in (20, 20). Si leggeRings: 5.
Provalo tu
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Prepara tutto qui, prima del ciclo di gioco.
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Modifica gli elementi qui, una volta per fotogramma.
screen.fill((20, 24, 48))
# Disegna qui, dopo aver riempito lo schermo.
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()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Python in una finestra di gioco
4Cicli che disegnano
Ripetere con forInizio, fine e passoUsare la variabile del cicloUn ciclo dentro un cicloContare con whileEsercitati da solo: Playground Pygame