Compter avec while
Fait partie de la section Python dans une fenêtre de jeu du Journey Pygame de Coddy. Leçon 19 sur 32.
Une boucle while se répète tant que sa condition est vraie. Utilise-la quand tu ne sais pas à l’avance combien de fois répéter :
radius = 200
rings = 0
while radius > 10:
pygame.draw.circle(screen, (150, 190, 255), (320, 240), radius, 2)
radius = radius // 2
rings = rings + 1Le rayon est divisé par deux à chaque fois : 200, 100, 50, 25, 12. // effectue une division et supprime ce qui vient après la virgule, donc 25 // 2 vaut 12. Ensuite, il vaut 6, la condition est fausse et la boucle se termine après 5 anneaux. rings les compte. Le cinquième nombre dans l’appel du cercle, 2, dessine un contour de 2 pixels de large au lieu d’un cercle rempli.
La boucle de jeu est aussi une boucle while : elle s’exécute jusqu’à ce que tu fermes la fenêtre. Une boucle while à l’intérieur d’une image doit se terminer rapidement, sinon l’image ne se termine jamais. Si tu supprimes la ligne qui divise le rayon par deux, la condition reste vraie pour toujours : le jeu se bloque et Check indique que le jeu n’a jamais atteint sa première image.
Défi
MoyenDans la partie dessin, remplace l’anneau unique par une boucle while :
- Commence avec
radius = 200etrings = 0. - Tant que
radius > 10: dessine un anneau de contour de couleur(150, 190, 255), d’épaisseur 2, centré en (320, 240) ; divise le rayon par deux avec//; ajoute 1 àrings. - Après la boucle, affiche
f"Rings: {rings}"en (20, 20). Il afficheRings: 5.
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Préparez les éléments ici, avant la boucle de jeu.
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Modifiez les éléments ici, une fois par image.
screen.fill((20, 24, 48))
# Dessinez ici, après le remplissage.
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()
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Python dans une fenêtre de jeu
1Votre première fenêtre
Votre premier programmeAfficher un messageLes couleurs en nombresDessiner la Lune4Des boucles qui dessinent
Répéter avec forDébut, fin et pasUtiliser la variable de boucleUne boucle dans une boucleCompter avec whileEntraînez-vous par vous-même : Playground Pygame