Laberinto con música y efectos
A continuación encontrarás el código de un programa de laberinto .
Tu tarea consiste en ponerle música y efectos de sonido al programa.
A continuación encontrarás el código de un programa de laberinto .
Tu tarea consiste en ponerle música y efectos de sonido al programa.
En esta sección se presenta el código simplificado del laberinto trabajado en el apartado 6, en concreto la versión del subapartado 6.3. Este código muestra un laberinto donde se utilizan imágenes en lugar de colores sólidos para las paredes.
import pygame
# Inicialización de Pygame
pygame.init()
tamaño_celdas = 50
# Definición de colores
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLACK = (0, 0, 0)
# Cargar la imagen de la pared
ladrillo = pygame.image.load("ladrillo.png")
ladrillo = pygame.transform.scale(ladrillo, (tamaño_celdas, tamaño_celdas))
# Crear laberinto
laberinto = [
[1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 3],
[1, 0, 0, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1]
]
# Inicializar la pantalla
ancho_pantalla = len(laberinto[0]) * tamaño_celdas
alto_pantalla = len(laberinto) * tamaño_celdas
pantalla = pygame.display.set_mode((ancho_pantalla, alto_pantalla))
pygame.display.set_caption("Laberinto")
# Configuración de la fuente para el texto
fuente = pygame.font.Font(None, 74)
# Posición inicial del jugador
pos_x = 1
pos_y = 6
# Variable para indicar si el jugador ha ganado
jugador_gano = False
# Bucle principal del juego
jugando = True
while jugando:
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
jugando = False
elif evento.type == pygame.KEYDOWN:
if not jugador_gano: # Solo permitir movimiento si el jugador no ha ganado
if evento.key == pygame.K_LEFT:
if laberinto[pos_y][pos_x - 1] != 1:
pos_x -= 1
elif evento.key == pygame.K_RIGHT:
if laberinto[pos_y][pos_x + 1] != 1:
pos_x += 1
elif evento.key == pygame.K_UP:
if laberinto[pos_y - 1][pos_x] != 1:
pos_y -= 1
elif evento.key == pygame.K_DOWN:
if laberinto[pos_y + 1][pos_x] != 1:
pos_y += 1
# Dibujar el laberinto
pantalla.fill(WHITE)
for fila in range(len(laberinto)):
for columna in range(len(laberinto[fila])):
if laberinto[fila][columna] == 1:
pantalla.blit(ladrillo, (columna * tamaño_celdas, fila * tamaño_celdas))
elif laberinto[fila][columna] == 3:
pygame.draw.rect(pantalla, RED, [columna * tamaño_celdas, fila * tamaño_celdas, tamaño_celdas, tamaño_celdas])
# Dibujar al jugador (solo en su posición actual)
pygame.draw.rect(pantalla, GREEN, [pos_x * tamaño_celdas, pos_y * tamaño_celdas, tamaño_celdas, tamaño_celdas])
# Verificar si el jugador ha llegado al objetivo (cuadrado rojo)
if laberinto[pos_y][pos_x] == 3:
jugador_gano = True
mensaje = fuente.render("¡Has ganado!", True, BLACK)
pantalla.blit(mensaje, (ancho_pantalla // 2 - mensaje.get_width() // 2, alto_pantalla // 2 - mensaje.get_height() // 2))
# Actualizar pantalla
pygame.display.flip()
# Salir de Pygame
pygame.quit()
Licencia: licencia propietaria intelectual