martes, 8 de septiembre de 2015

Crear juego RPG en C++ y Allegro 4 (8) Música

Continuamos con el curso de crea tu juego RPG en C++ y Allegro. En esta entrega se añadirá música de fondo, una diferente para cada escenario, tal y como se muestra en el video.



NOTA IMPORTANTE:

Para realizar este curso es necesario tener hecho los anteriores, ya que solo se hace referencia a cambios en el código.



Para este ejemplo se necesita dos archivos MIDI, para poder poner una música a cada escenario. Los archivos MIDI se llamaran:

  •  musica1: música de fondo que se escuchara cuando este el personaje dentro de la casa.
  •  musica2: música de fondo que se escuchara cuando este el personaje en el bosque. 
Los archivos utilizados para este curso, puedes descargarlo haciendo clic aqui.



Programación

Siguiendo con el curso anterior, todo lo referente al sonido se incluye dentro de audio.h. Se declaran dos variables del tipo MIDI, llamadas musica1, musica2. Dentro de la función inicia_sonido se inicializan estas dos variables de la siguiente forma:

 musica1 = load_midi("musica1.mid");
 musica2 = load_midi("musica2.mid");

Y se añaden dos funciones nuevas para reproducir la música deseada.

void musica_casa(){
     play_midi(musica1,1);
}     

void musica_bosque(){
     play_midi(musica2,1);
} 

El segundo parámetro de la función play_midi, indica si se quiere que la música sea repetitiva, como si se quiere que se repita se pone un 1.
En la funcion carga_juego() de mijuego.h se añade una llamada a musica_casa, ya que el programa se inicia en ese escenario. Las próximas llamadas a cambiar la musica de fondo se realizan en la funcion actualiza_juego(), donde se controla que se cambia de escenario.




    switch ( lugar ) 
    {           
    case 1:   // casa
         if ( cambio == 1 )
         {
              // cambiamos a otro lugar              
              lugar = 2;
              fondo  = bosq_a;
              choque = bosq_c;
              cielo  = bosq_b;  
              jugador.posiciona( 410,370 ); 
              desplazamiento_map_x=0;
              desplazamiento_map_y=160; 
              desplaza=true;     
              sonido_abrirpuerta();     
              sonido_ambiente();
              musica_bosque();
         }
         break;
    case 2:   // bosque
         if ( cambio == 2 )
         {
              // cambiamos a otro lugar
              lugar = 1;
              fondo  = casa_a;
              choque = casa_c;
              cielo  = casa_b;  
              // situamos al prota dentro de la casa
              jugador.posiciona( 290,440 ); 
              desplazamiento_map_x=0;
              desplazamiento_map_y=0;  
              desplaza=false;   
              sonido_abrirpuerta(); 
              para_sonido_ambiente();   
              musica_casa();   
         }
         break;  

Y aquí acaba esta entrega.



Si quieres ver alguna de las anteriores entregas entra en el Contenido del Blog


Recuerda, si tienes algún problema con los ejemplos de la pagina, o alguna duda. Puedes plantear tu pregunta en el foro de programación:


2 comentarios:

  1. No me salen los midis :(
    Ni los reproduce el grabber, ni sé reproducen en el juego, sin embargo sí se me reproducen cuando les doy doble clic afuera en la carpeta.
    Verifiqué y todo el código esta como en el ejemplo. Que es lo que pasa?

    ResponderEliminar
    Respuestas
    1. Según el comando:
      musica1 = load_midi("musica1.mid");

      Carga un archivo de audio en formato midi llamado "musica1.mid", que debe encontrarse en la misma carpeta donde se encuentra el ejecutable.
      Si todo está correcto debe funcionar.

      Eliminar

Antes de publicar un comentario

Todos los comentarios que se realicen en el blog son moderados.

Debido a esto es muy probable que tu comentario no aparezca de inmediato ya que previamente debe ser revisado para evitar un mal uso (SPAM).

Podrán realizar comentario cualquiera que tenga una cuenta de Google.

Related Posts Plugin for WordPress, Blogger...