Une boucle dans une boucle
Fait partie de la section Python dans une fenêtre de jeu du Journey Pygame de Coddy. Leçon 18 sur 32.
Le corps d’une boucle peut contenir une autre boucle. La boucle interne s’exécute entièrement à chaque passage de la boucle externe :
for row in range(4):
for col in range(8):
x = 130 + col * 50
y = 210 + row * 60
pygame.draw.rect(screen, (255, 210, 90), (x, y, 20, 20))Pour row égal à 0, la boucle interne dessine 8 fenêtres sur la rangée du haut. Ensuite, row passe à 1 et la boucle interne en dessine 8 autres, 60 pixels plus bas. Quatre rangées de huit font 32 fenêtres. Une grille a toujours cette forme : une boucle pour les rangées, une pour les colonnes.
pygame.draw.rect(screen, colour, (x, y, width, height)) dessine un rectangle plein dont le coin supérieur gauche se trouve en (x, y).
Attention à l’indentation : le for interne est indenté sous le for externe, et son corps est encore plus indenté, de 8 espaces par rapport à la boucle externe.
Défi
MoyenIllumine tout le bâtiment :
- Encapsule la boucle des fenêtres dans
for row in range(4):. - Définis
y = 210 + row * 60, afin que les rangées soient aux positions y 210, 270, 330 et 390. - Tu obtiens 32 fenêtres : 4 rangées de 8.
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.
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.rect(screen, (40, 44, 70), (100, 180, 440, 300))
for col in range(8):
x = 130 + col * 50
y = 210
pygame.draw.rect(screen, (255, 210, 90), (x, y, 20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
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