Ejemplo de juego infantil con sonidos. Adivina el animal - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: General (https://gambas-es.org/forum-4.html) +--- Tema: Ejemplo de juego infantil con sonidos. Adivina el animal (/thread-1407.html) |
Ejemplo de juego infantil con sonidos. Adivina el animal - Shell - 23-06-2023 Buenas!. Es un juego infantil que hice para resolver una duda que tengo con los sonidos. A ver si podeís ayudarme. - Se hace clic en el botón de reproducir el sonido y luego se hace clic en el animal que crees que hace ese sonido. Como es lógico para un adulto no tiene problema. Ok, cuando se acierta se escucharán los aplausos. Y ahora viene la pregunta. Si le doy a reproducir sonido de animal, escucharé dos sonidos a la vez. Los aplausos y el del animal. ¿ Cómo se podría hacer para que los aplausos cesasen y solo se escuchase el sonido del animal ?. En realidad hice este ejemplo con la escusa de resolver esta duda. Lo necesito para otro ejemplo. El código fuente: FMain: Código: ' Gambas class file Clase Animal: Código: Property nombre As String Use $nombre Os subo el ejemplo del juego de los sonidos. ¿ Qué me podéis aconsejar cuando trabaje con sonidos y uso el componente gb.sdl2.audio ?. Saludos RE: Ejemplo de juego infantil con sonidos. Adivina el animal - Shordi - 23-06-2023 Sorry, nunca he usado ese componente. Prueba a soslayar el problema con un "Bieeennn", que dure un segundo. Así no se te montan... supongo. Saludos RE: Ejemplo de juego infantil con sonidos. Adivina el animal - Shell - 23-06-2023 (23-06-2023, 09:53)Shordi escribió: Sorry, nunca he usado ese componente. Prueba a soslayar el problema con un "Bieeennn", que dure un segundo. Así no se te montan... supongo. ¿ Entones como estás reproduciendo sonidos en tus aplicaciones ?. ( ¿ Una aplicación externa ?). Castigado!. A escribir solo usaré aplicaciones externas cuando Gambas no me de esa posibilidad. Se podía cambiar el sonido pero no es una solución que resuelva el problema Imagina una orquesta. Suenan los instrumentos de cuerdas por un lado, por otro lado los de percusión, etc. Y quieres que los de una clase de instrumentos dejen de funcionar (pararlos) y que solo suene los que te interesa, Ese es otro ejemplo más a solucionar. En su día vi los ejemplos de Vuott, que se de sobra que le gusta el tema del sonido, sobre todo los midis. Pero no acabé de entender el uso de canales de sonido. Reproduces un sonido, pero, ¿ en que canal se encuentra ese sonido?. Esto es lo que lo para. Pero claro, ¿ cómo sabes que el sonido "x" se reproduce en el canal 1 o el canal 2, etc ?. Puedes reproducir un sonido mediante la clase Sound o la clase Channel. Lo más socorrido es usar Sound, pero si ya te interesa pausar, parar, se usa Channel. Aun así el juego que estoy desarrollando me suenan los dos sonidos a la vez y solo quiero que reproduzca uno. También se puede "esperar" a que termine de reproducir el sonido y que luego comience el siguiente, pero no es lo que me interesa, o sí por que es breve, no es tan largo como los aplausos. A ver si el maestro de orquesta "Vuott" me ha entendido. Seguro que si, ya que estuvo el verano anterior con dos españolas. Como hemos tratado temas similares en el foro ( en el antiguo ) Este es el enlace en el antiguo foro de Gambas-es que lleva a la wiki de la comunidad de Italia sobre el tema del componente gb.sdl2.audio. Utilizar El Nuevo Componente Gb.sdl2.audio Pero aún así a ver que responde Vuott. Saludos RE: Ejemplo de juego infantil con sonidos. Adivina el animal - tincho - 23-06-2023 Shell, tienes que cargar el archivo a reproducir cada vez que el archivo sea dirferente. Código: Music.Stop() Donde $File es el sondo de turno a reproducir. RE: Ejemplo de juego infantil con sonidos. Adivina el animal - Shell - 23-06-2023 Hola Tincho. (23-06-2023, 11:16)tincho escribió: Shell, tienes que cargar el archivo a reproducir cada vez que el archivo sea dirferente. No se me había ocurrido ese método. Al final lo hice de otra forma y acabo de de ver tu respuesta ahora. He usado canales de sonido. Voy a mostraros la parte del código donde se hace referencia a estos. El Form_Open() Código: Public Sub Form_Open() Cuando se crea el evento MouseDown sobre la imagen del animal. Código: Public Sub ImagenesDeAnimales_MouseDown() Y cuando se le da al botón reproducir Código: Public Sub btnReproduce_Click() La clase Animal queda así: Código: Property nombre As String Use $nombre Uno de los problemas que me estaba encontrando era la activación del panel que lo solucioné es que el jugador no puede hacer clic (sé que es mousedown) sobre las imágenes de los animales si antes no haber no haber hecho clic en el botón de reproducir sonido. El estado del panel cambia. Subo la nueva versión del código. Los aplausos cesan y el sonido del animal suena. Saludos RE: Ejemplo de juego infantil con sonidos. Adivina el animal - Shell - 23-06-2023 Aún estaba creando molestias la opción de estar activo el panel que contiene las imágenes cuando no debe estarlo. Esto deberá solucionar el problema. Al hacer clic sobre la imagen, se activa el panel y luego se desactiva Código: Public Sub ImagenesDeAnimales_MouseDown() Y cuando se le da al botón de reproducir el sonido para que al final del código de este active el panel de nuevo. Código: Public Sub btnReproduce_Click() Aún queda que se muestre un mensaje diciéndole al jugador que pulse el botón, una vez acierte o falle. Como ven no hay un proyecto que no haya que estar revisando y revisando su correcto funcionamiento y luego si se le añaden características nuevas. Saludos |