Crear una animación de lluvia de código con Pygame

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a crear una animación simple de lluvia de código utilizando la biblioteca Pygame en Python. Las animaciones de lluvia de código, popularizadas por películas como "The Matrix", muestran caracteres que caen en una pantalla, dando la impresión de una lluvia digital. Utilizaremos la biblioteca Pygame para crear la animación y mostrarla en una ventana.

👀 Vista previa

Code rain

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo configurar la ventana de animación en Pygame
  • Cómo definir una clase "Gota de lluvia" para representar cada carácter que cae
  • Cómo generar y mostrar múltiples instancias de la clase Gota de lluvia
  • Cómo implementar el bucle principal para actualizar continuamente la animación
  • Cómo cerrar correctamente la ventana de animación

🏆 Logros

Después de completar este proyecto, podrás:

  • Utilizar la biblioteca Pygame para crear animaciones
  • Definir y utilizar una clase en Python
  • Manejar eventos del usuario en Pygame
  • Crear un bucle principal de animación en Pygame
  • Cerrar correctamente una ventana de animación en Pygame

Crear los archivos del proyecto

Antes de comenzar, asegúrate de tener instalada Pygame. Si no la tienes instalada, puedes hacerlo utilizando pip:

sudo pip install pygame

A continuación, crea un archivo llamado code_rain.py en tu editor de código o IDE preferido. Este será el archivo principal donde escribirás el código para el juego de Pong.

cd ~/project
touch code_rain.py
✨ Revisar Solución y Practicar

Configurar la ventana de animación

Dentro del archivo code_rain.py, importa las bibliotecas necesarias al principio del código:

import pygame
import random

Luego, inicializa Pygame llamando a pygame.init():

pygame.init()

A continuación, configura la ventana de animación definiendo el ancho, alto y el título:

width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Code Rain")

Define los colores utilizados en la animación:

background_color = (0, 0, 0)
text_color = (0, 255, 0)

Configuración de la fuente:

font = pygame.font.Font(None, 36)
✨ Revisar Solución y Practicar

Definiendo la clase Gota de lluvia

A continuación, definimos la clase Gota de lluvia, que representa cada carácter que cae en la animación de lluvia de código. La clase Gota de lluvia contiene atributos como la posición inicial, el texto y la velocidad de caída de cada gota de lluvia.

class Gota de lluvia:
    def __init__(self):
        self.x = random.randint(0, width)
        self.y = random.randint(0, height)
        self.text = chr(random.randint(33, 126))
        self.speed = random.randint(1, 5)

    def fall(self):
        self.y += self.speed
        if self.y > height:
            self.y = 0
            self.x = random.randint(0, width)

    def display(self):
        text_surface = font.render(self.text, True, text_color)
        screen.blit(text_surface, (self.x, self.y))

El método __init__ se llama cuando se instancia la clase para inicializar las propiedades de la gota de lluvia, incluyendo la posición inicial aleatoria (x, y), los caracteres de texto aleatorios (ASCII entre 33 y 126) y la velocidad de caída aleatoria (entre 1 y 5).

El método fall se utiliza para mover las gotas de lluvia hacia abajo. Incrementa el valor de self.y de acuerdo con la velocidad de la gota de lluvia. Si la gota de lluvia sale de la pantalla (cuando self.y es mayor que la altura de la pantalla), restablece la posición en la parte superior de la pantalla y selecciona aleatoriamente una nueva posición x en la pantalla.

El método display se utiliza para mostrar las gotas de lluvia. Utiliza la función font.render de la biblioteca pygame para crear una superficie de texto y la muestra en la posición de la gota de lluvia (self.x, self.y) en la pantalla.

✨ Revisar Solución y Practicar

Generando y mostrando gotas de lluvia

Ahora, crearemos y mostraremos múltiples instancias de la clase Gota de lluvia para simular los caracteres que caen. El código siguiente genera un número especificado de gotas de lluvia y actualiza sus posiciones en la pantalla.

num_raindrops = 100
raindrops = [Gota de lluvia() for _ in range(num_raindrops)]
✨ Revisar Solución y Practicar

Manejar el bucle principal

En este paso, implementamos el bucle principal que maneja la animación actualizando continuamente la pantalla. También escucha el evento de salida para cerrar la ventana correctamente.

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

    screen.fill(background_color)

    for drop in raindrops:
        drop.fall()
        drop.display()

    pygame.display.flip()

pygame.quit()

El cuerpo principal del bucle de animación es un bucle while, donde la variable running controla el bucle. El bucle solo seguirá ejecutándose si running es True.

Dentro del bucle de animación, utiliza pygame.event.get() para obtener una lista de eventos de pygame y examina cada evento iterando sobre la lista de eventos. En este caso, la principal comprobación es si hay un evento de salida pygame.QUIT, que se genera cuando el usuario cierra la ventana de animación. Si se detecta un evento de salida, establece running en False para salir del bucle de animación.

screen.fill(background_color) llena el color de fondo de la ventana de animación screen para cubrir el contenido de la trama anterior en preparación para dibujar una nueva trama.

Itera a través de la lista raindrops, llamando al método fall() en cada objeto de gota de lluvia para que caiga y llamando al método display() para mostrar la gota de lluvia en la ventana del juego.

pygame.display.flip() se utiliza para actualizar en la pantalla todas las operaciones de dibujo anteriores para la animación.

Después de que termine el bucle de animación, llama a pygame.quit() para limpiar la biblioteca de pygame y salir de la animación.

✨ Revisar Solución y Practicar

Ejecutar el proyecto

Finalmente, cambia a Escritorio y ejecuta el proyecto con el siguiente comando:

python code_rain.py
Code rain
✨ Revisar Solución y Practicar

Resumen

En este proyecto, aprendiste cómo crear una animación simple de lluvia de código utilizando la biblioteca Pygame en Python. Inicializaste el módulo Pygame, definiste la clase Gota de lluvia, generaste y mostraste múltiples gotas de lluvia e implementaste el bucle principal para manejar la animación. Este proyecto proporciona una comprensión básica de cómo crear animaciones simples utilizando Pygame.