Menu
CoddyTech

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

Le 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.

challenge icon

Défi

Moyen

Dans la partie dessin, remplace l’anneau unique par une boucle while :

  1. Commence avec radius = 200 et rings = 0.
  2. 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.
  3. Après la boucle, affiche f"Rings: {rings}" en (20, 20). Il affiche Rings: 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()
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Pygame