Menu
CoddyTech

Un ciclo dentro un ciclo

Fa parte della sezione Python in una finestra di gioco del percorso Pygame di Coddy. Lezione 18 di 32.

Il corpo di un ciclo può contenere un altro ciclo. Il ciclo interno viene eseguito fino alla fine a ogni iterazione di quello esterno:

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))

Per row 0, il ciclo interno disegna 8 finestre lungo la parte superiore. Poi row diventa 1 e il ciclo interno ne disegna altre 8, 60 pixel più in basso. Quattro righe di otto fanno 32 finestre. Una griglia ha sempre questa forma: un ciclo per le righe, uno per le colonne.

pygame.draw.rect(screen, colour, (x, y, width, height)) disegna un rettangolo pieno con l'angolo superiore sinistro in (x, y).

Fai attenzione ai rientri: il for interno è rientrato sotto quello esterno e il suo corpo è rientrato ancora, di 8 spazi rispetto al ciclo esterno.

challenge icon

Sfida

Medio

Illumina l'intero edificio:

  1. Racchiudi il ciclo delle finestre in for row in range(4):.
  2. Imposta y = 210 + row * 60, così le righe si trovano a y 210, 270, 330 e 390.
  3. Otterrai 32 finestre: 4 righe da 8.

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.

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.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()

Tutte le lezioni di Python in una finestra di gioco

Esercitati da solo: Playground Pygame