Saltar la navegación

7.3. Síntesis: poner sonido

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.

Código fuente del laberinto

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

Creado con eXeLearning (Ventana nueva)