Añadir sonidos a un juego Pygame
Introducción
El capítulo anterior estaba dedicado a los aspectos gráficos que son, como es lógico, muy importantes para la animación de un videojuego. El sonido también es muy importante en dicha animación. La mayoría de los videojuegos incluyen música de fondo durante el juego. Además, cada acción del "game play" se suele destacar por medio de un efecto sonoro: por ejemplo, cada vez que el personaje gana puntos, cuando logra ascender de nivel o incluso cuando se pierde la partida usando un efecto sonoro con un tono negativo. Estos efectos de sonido, a diferencia del sonido de fondo, suelen ser muy cortos, alrededor de un segundo. Aquí Pygame también ofrece formas sencillas de configurar estos dos tipos de sonido (sonido de fondo por un lado y efecto de sonido, por otro).
Gestión del sonido con Pygame
El módulo que permite la gestión del sonido dentro de Pygame, se llama pygame.mixer. Contiene dos conceptos principales:
-
El submódulo music, que gestiona la música de fondo. Necesariamente solo hay uno a la vez. Se pueden prever diferentes músicas de fondo para diferentes partes del juego, pero solo se reproducirá una.
-
El objeto Sound de mixer, que se puede instanciar varias veces para, por ejemplo, usarlo en los efectos de sonido del juego. Este objeto es el que se utilizará para cada pequeña unidad sonora que participe en el "game play".
En primer lugar, es necesario inicializar este módulo con la función pygame.mixer.init. Esta llamada se debe hacer de manera explícita. El módulo mixer incluye una serie de herramientas relacionadas con los efectos de sonido, gracias a la clase Sound. Este módulo también incluye una especie de submódulo, music, dedicado a la gestión del sonido de fondo.
1. Los módulos pygame.mixer y pygame.mixer.music
La documentación de los módulos mixer y music de Pygame está disponible en el capítulo Principales módulos de Pygame.
a. El módulo pygame.mixer.music (sonido de fondo)
Este módulo Pygame permite administrar el sonido de fondo (único). Estas son las principales funciones disponibles en music:
-
pygame.mixer.music.load permite cargar...
Ejemplo de uso de sonido con Pygame
El objetivo de este pequeño ejemplo es utilizar los dos aspectos que se han presentado anteriormente. De esta manera, vamos a crear una ventana de juego a la que asociaremos un sonido de fondo (music), así como unos efectos de sonido que se activan cuando se pulsan botones del teclado. Así, durante toda la existencia de la ventana, tendremos el silbato de fondo. Y según los deseos del usuario, pulsando las teclas correspondientes además es posible disponer de otros efectos de sonido (muy cortos).
-
El sonido de fondo es un silbato reproducido en bucle.
-
Al pulsar la tecla o se reproduce el canto de un gallo.
-
Al pulsar la tecla c se emite un ruido de cuervo.
-
Al pulsar la tecla v se emite el timbre de una bicicleta.
Al pulsar el botón [Flecha arriba], el volumen de cada uno de los cuatro sonidos aumenta, mientras que al pulsar la tecla [Flecha abajo], este mismo volumen disminuye.
Comenzamos obligatoriamente inicializando el módulo mixer.
pygame.mixer.init()
Posteriormente, creamos el sonido de fondo a partir de un archivo de sonido OGG, que incluye un silbido melódico que dura unas pocas decenas de segundos.
SILBATO = pygame.mixer.music.load("silbato.ogg")
Seguidamente, puede reproducir este sonido de fondo con la función play, que toma dos argumentos:
-
El primero permite indicar cuántas veces desea repetir el sonido (aquí, diez veces).
-
El segundo, un valor...
Conclusión
Hemos visto dos aspectos esenciales de la construcción de un videojuego: los gráficos y el sonido, por lo que estamos preparados para la parte importante de Pygame: la noción de sprite y su uso. El sprite en Pygame es particularmente útil para gestionar colisiones y, por lo tanto, el encuentro entre dos objetos. Esta necesidad se satisface y garantiza fácilmente cuando se usa Pygame y, por lo tanto, sprites.