Menu
CoddyTech

Un bucle dentro de otro

Parte de la sección Python en una ventana de juego del Journey de Pygame de Coddy. Lección 18 de 32.

El cuerpo de un bucle puede contener otro bucle. El bucle interno se ejecuta por completo en cada iteración del externo:

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

Para row 0, el bucle interno dibuja 8 ventanas a lo largo de la parte superior. Después, row pasa a ser 1 y el bucle interno dibuja 8 más, 60 píxeles más abajo. Cuatro filas de ocho suman 32 ventanas. Una cuadrícula siempre tiene esta forma: un bucle para las filas y otro para las columnas.

pygame.draw.rect(screen, colour, (x, y, width, height)) dibuja un rectángulo relleno con la esquina superior izquierda en (x, y).

Fíjate en la sangría: el for interno tiene sangría respecto al externo, y su cuerpo tiene otra sangría, 8 espacios desde el bucle externo.

challenge icon

Desafío

Intermedio

Ilumina todo el edificio:

  1. Envuelve el bucle de las ventanas en for row in range(4):.
  2. Establece y = 210 + row * 60, para que las filas queden en y 210, 270, 330 y 390.
  3. Obtendrás 32 ventanas: 4 filas de 8.

Pruébalo tú mismo

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Prepara todo aquí, antes del bucle del juego.

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Actualiza las cosas aquí, una vez por fotograma.

    screen.fill((20, 24, 48))
    # Dibuja aquí, después de rellenar la pantalla.
    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()

Todas las lecciones de Python en una ventana de juego

Practica por tu cuenta: Playground de Pygame