Cómo implementar fondos de desplazamiento en Pygame
Esta biblioteca de juegos de Python está repleta de funciones, incluidas algunas herramientas sencillas que puedes utilizar para crear un desplazamiento fluido y de paralaje.
Los fondos desplazables pueden mejorar enormemente el atractivo visual y la profundidad de un juego. Pueden crear la ilusión de movimiento, dando al juego una sensación dinámica e inmersiva. Puede implementar fondos de desplazamiento en unos sencillos pasos utilizando Pygame.
Pygame es una biblioteca de Python popular que puedes utilizar para desarrollar juegos. Agregar fondos de desplazamiento a sus proyectos de Pygame les dará vida y brindará una experiencia más atractiva para los jugadores.
Crea un juego sencillo
Para comprender el concepto de desplazamiento de fondos en Pygame, comience creando un juego simple donde el jugador pueda moverse hacia la izquierda y hacia la derecha. También puedes incluir dos plataformas, representadas por rectángulos, para que sirvan como entorno de juego. Crea un nuevo archivo llamado simple-game.py.
El código utilizado en este artículo está disponible en este repositorio de GitHub y su uso es gratuito bajo la licencia MIT.
Primero, importe el módulo pygame e inicialícelo. Luego define la posición inicial del jugador y la velocidad de movimiento. Cree plataformas utilizando objetos pygame.Rect y defina sus posiciones y dimensiones.
Dentro del bucle del juego, gestiona eventos como salir del juego. También puede manejar el movimiento del jugador basándose en entradas táctiles o de teclado.
Aquí está el resultado del juego simple:
Crear diferentes capas
Para lograr el efecto de desplazamiento, puede crear varias capas de fondos con diferentes colores. Cada capa se moverá a una velocidad diferente, creando un efecto de paralaje. Este efecto da la ilusión de profundidad y mejora la sensación de movimiento en el juego.
Defina dos capas de fondo, cada una de las cuales cubra toda la ventana del juego, utilizando objetos pygame.Rect. También define los colores de cada capa en la lista background_colors. La lista background_speeds determina la velocidad a la que se moverá cada capa.
# Add this code below the previous section
background_layers = [
pygame.Rect(0, 0, screen_width, screen_height),
pygame.Rect(0, 0, screen_width, screen_height)
]
background_colors = [(30, 30, 30), (60, 60, 60)]
background_speeds = [0.1, 1.0]
Agregar efectos de fondo de desplazamiento
Para crear el efecto de fondo de desplazamiento, debes actualizar las posiciones de las capas de fondo en el bucle del juego. Moverás cada capa horizontalmente según su velocidad asignada.
Cree un nuevo archivo llamado scrolling-bg.py y agregue el código con las siguientes actualizaciones:
for i in range(len(background_layers)):
background_layers[i].x -= background_speeds[i]
if background_layers[i].x <= -screen_width:
background_layers[i].x = 0
pygame.draw.rect(screen, background_colors[i], background_layers[i])
Itere a través de cada capa de fondo. Resta la velocidad correspondiente de la coordenada x de la capa, lo que hace que se mueva hacia la izquierda. Si una capa llega al borde izquierdo de la pantalla, restablece su posición hacia la derecha, creando un efecto de desplazamiento continuo.
Finalmente, dibuja cada capa de fondo rectangular en la pantalla usando pygame.draw.rect() y pasando el color correspondiente y el objeto pygame.Rect.
Agregar un efecto de paralaje mientras te mueves
Para mejorar el efecto de paralaje, puedes modificar el movimiento de la plataforma para que ocurra cuando el jugador se está moviendo. Esto creará una fuerte sensación de profundidad y movimiento dinámico. Cree un nuevo archivo llamado parallax.py y agregue el código con las siguientes actualizaciones:
# Define the platform positions and speeds
rect1 = pygame.Rect(50, screen_height - 100, 200, 10)
rect2 = pygame.Rect(screen_width - 250, screen_height - 200, 200, 10)
platforms = [
{"rect": rect1, "speed": 3},
{"rect": rect2, "speed": 1}
]
# Add this code inside the game loop
# Player movement
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_x > 0:
player_x -= player_speed
for platform in platforms:
platform["rect"].x -= platform["speed"]
if keys[pygame.K_RIGHT] and player_x < screen_width:
player_x += player_speed
for platform in platforms:
platform["rect"].x += platform["speed"]
for platform in platforms:
pygame.draw.rect(screen, (0, 255, 0), platform["rect"])
Representar las plataformas como diccionarios que contienen tanto el objeto rectángulo (rect) como la velocidad a la que debe moverse la plataforma (speed). Las plataformas se actualizan en el bucle del juego según el movimiento del jugador.
Al implementar esta modificación, el efecto de desplazamiento solo estará activo cuando el jugador se esté moviendo activamente, mejorando aún más la ilusión de profundidad y movimiento.
Incluyendo características adicionales
Puedes implementar varias funciones adicionales para mejorar los fondos de desplazamiento en tu juego. Aquí hay unos ejemplos.
Aleatorizar colores de fondo
Para agregar variación a las capas de fondo, puedes aleatorizar sus colores. Puedes hacer esto modificando la lista background_colors:
import random
# Add this code before the game loop
background_colors = [
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
]
Agregar más capas de fondo
Puedes experimentar agregando más capas de fondo para crear un efecto de paralaje más rico. Simplemente defina objetos, colores y velocidades pygame.Rect adicionales:
# Add this code before the game loop
background_layers = [
pygame.Rect(0, 0, screen_width, screen_height),
pygame.Rect(0, 0, screen_width, screen_height),
pygame.Rect(0, 0, screen_width, screen_height),
pygame.Rect(0, 0, screen_width, screen_height)
]
background_colors = [
(30, 30, 30),
(60, 60, 60),
(90, 90, 90),
(120, 120, 120)
]
background_speeds = [1, 2, 3, 4]
Utilice imágenes para fondos
En lugar de colores sólidos, puedes utilizar archivos de imagen como fondo. Pygame proporciona funciones para cargar y renderizar imágenes.
Cargue los archivos de imagen fondo_0.png, fondo_1.png y fondo_2.png usando pygame.image.load(). Utilice el método convert() para mejorar el rendimiento y escalar las imágenes para que coincidan con las dimensiones de la pantalla con pygame.transform.scale().
# Add this code before the game loop
background_images = [
pygame.image.load("background_0.png").convert(),
pygame.image.load("background_1.png").convert(),
pygame.image.load("background_2.png").convert()
]
background_speeds = [1, 2, 3]
for i in range(len(background_images)):
size = (screen_width, screen_height)
background_images[i] = pygame.transform.scale(background_images[i], size)
Finalmente, actualiza el bucle donde dibujas las capas de fondo para usar las imágenes:
# Update this code inside the game loop
for i in range(len(background_layers)):
background_layers[i].x -= background_speeds[i]
if background_layers[i].x <= -screen_width:
background_layers[i].x = 0
screen.blit(background_images[i], background_layers[i])
Mejores prácticas para desplazar fondos
A continuación se presentan algunas de las mejores prácticas a considerar al implementar fondos de desplazamiento en sus proyectos de Pygame.
Optimizar el rendimiento
Los fondos con desplazamiento implican renderizado y actualización continua. Para garantizar un juego fluido, considere optimizar su código y minimizar cálculos innecesarios.
Experimente con velocidades de capa
Ajustar las velocidades de las capas de fondo puede crear diferentes efectos. Juega con diferentes valores para encontrar el equilibrio adecuado y lograr el impacto visual deseado.
Pruebe en diferentes tamaños de pantalla
Asegúrese de que sus fondos de desplazamiento funcionen bien en varias resoluciones de pantalla. Considere implementar escalado dinámico o usar diferentes imágenes de fondo para diferentes relaciones de aspecto.
Utilice formatos de imagen adecuados
Si decide utilizar imágenes para sus fondos, elija el formato de imagen adecuado (por ejemplo, PNG, JPEG) para equilibrar el tamaño del archivo y la calidad de la imagen. También puedes reducir los tiempos de carga comprimiendo y optimizando tus imágenes.
Considere el uso de la memoria
Si planea utilizar muchas imágenes de alta resolución para sus fondos, tenga en cuenta los requisitos de memoria. Las imágenes grandes pueden consumir una cantidad significativa de memoria, lo que podría afectar el rendimiento y la capacidad de respuesta del juego.
Haga que los juegos sean más divertidos con fondos en desplazamiento
Al incorporar fondos con desplazamiento, puedes crear diferentes entornos, como paisajes en movimiento, paisajes urbanos futuristas o mundos submarinos. El efecto de paralaje añade un toque dinámico, haciendo que el mundo del juego parezca vivo e interactivo.
Recuerda experimentar, iterar y explorar posibilidades creativas con fondos desplazables para hacer que tus juegos sean más divertidos y cautivadores para los jugadores.