|
Taller
|
| >> Taller >> Curso De Iniciación A DIV by Wakroo >> Cap. 6: Sonidos. |
Vamos a darle un poco más de vidilla al juego. ¿Y qué mejor que hacer que nuestro juego sea ruidoso? Eso le da mucha vidilla y es muy, muy sencillo.
Antes de poder usar los maravillosos efectos FX que hemos preparado (en la librería de DIV hay muchos) tenemos que decirle al programa que los cargue en memoria. ¿Cómo se hace eso? con la instrucción load_wav(), claro.
Por lo tanto, en el main, después de cargar el fpg y antes de llamar al proceso personaje (en realidad da igual en qué orden carguemos las cosas, pero algún orden hay que poner, ¿no?) ponemos lo siguiente:
..........sonido=load_wav("c:\cursoDIV\sonido.wav);
Con esto cargamos sonido.wav y guardamos en la variable sonido el valor de retorno para poder usarlo (esto está explicado en el siguiente capítulo). Naturalmente, tendremos que declarar una variable global para cada sonido que ejecutemos y guardar en cada una el valor de retorno.
Pero por ahora lo único que hemos hecho es cargar el sonido. Una vez cargado podemos hacer que suene en cualquier momento mediante la función sound() [NOTA: en fenix play_wav()]. Por ejempo, si hemos cargado el sonido de un láser podríamos poner en el proceso disparo() la siguiente sentencia:
...... sound(sonido,200,256);
El primer parámetro que se le pasa es el valor que hemos guardado al cargar el sonido que queremos reproducir, el segundo es el volumen y el tercero la frecuencia (para la frecuencia consultar la documentación de DIV, en Fenix no se puede cambiar la frecuencia de los sonidos, creo, y hay que usar la función set_wav_volume(sonido,volumen); a continuación de play_wav(...) para cambiar el volumen). Al volumen en vez de un valor concreto se le podría poner una variable, de manera que si todos los sonidos tienen esa variable se podrá controlar el volumen general del juego alterando el valor de esa variable. También tenemos la función stop_sound(), que puede para un sonido en concreto si hemos guardado el retorno de la función sound en una variable o todos los sonidos si le ponemos como parámetro (all_sound) (en Fenix hay que poner 0, pero bastaría con definir la constante all_sound=0; ¿he dicho ya que las constantes son vitales?).
Los wavs están muy bien para efectos FX cortos, como disparos, puertas, saltos y otro tipo de sonidos que no se reproducen durante mucho tiempo. Pero para temas de fondo no son adecuados, ya que ocupan mucho espacio. Para eso están las funciones load_song(), song() y stop_song(), que permiten usar archivos hechos con trackers y otros programas de composición musical. Hay muchos por Internet y DIV incluye unos cuantos de ejemplo. El mayor problema que tienen es que no se puede controlar el volumen desde el programa, pero bueno, se pueden crear temas muy largos ocupando muchísimo menos que un wav.