Yo tengo el siguiente problema con el sonido. Cuando inicio el sonido, se escucha como si fuera un eco, es decir me da la impresion que estuviera colocando reproducir dos veces-
Hola @anibale, lo que podrías hacer es incluir una sentencia para imprimir en el intérprete y ver cuantas veces aparece.
Por ejemplo:
print("Reproduciendo sonido")
sonido.reproducir()
Ahora veo que el problema esta en que el sonido se reproduce apenas abro pilas.
Luego cuando abro el mi archivo reproduce otra vez. Por eso el efecto doble.
Hola @anibale, que raro que se reproduzca ni bien se abre pilas… ¿podrías enviarme el código para que pueda ver si en mi computadora hace lo mismo?
A mi me pasa lo mismo. Abro el intreprete, cargo el archivo y anda joya, cuando lo cierro ( a la ejecución) la musiquita sigue.
Voy a tratar de grabarlo para que sea más claro.
Este es mi código @hugoruscitti
coding: utf-8
import pilasengine
pilas = pilasengine.iniciar()
“”“Crear la Pantalla de Menu”""
class EscenaMenu(pilasengine.escenas.Escena):
def iniciar(self):
self.musica_inicio = self.pilas.sonidos.cargar(‘leyenda.ogg’)
self.musica_inicio.reproducir()
self.fondo = self.pilas.fondos.Fondo()
self.fondo.imagen = self.pilas.imagenes.cargar(‘portada.png’)
self.texto = self.pilas.actores.Texto(“EL LABERINTO DEL MINOTAURO”, y=200)
“”“Mostrar las opciones del Menu”""
self.menu()
def menu(self):
opciones = [
('Nivel 1', self.primer_nivel),
('Nivel 2', self.segundo_nivel),
('Ayuda', self.ayuda_juego),
('Salir', self.salir_del_juego)
]
self.menu = self.pilas.actores.Menu(opciones, y=0)
"""metodos que dan funcionalidad al menu"""
def primer_nivel(self):
self.pilas.escenas.Escena_1()
self.musica_inicio.detener()
def segundo_nivel(self):
self.pilas.escenas.Escena_2()
self.musica_inicio.detener()
def ayuda_juego(self):
self.pilas.escenas.Escena_4()
self.musica_inicio.detener()
def salir_del_juego(self):
self.pilas.terminar()
self.musica_inicio.detener()
self.victoria_wav.detener()
“”“Crear el primer nivel del juego”""
class Escena_1(pilasengine.escenas.Escena):
def iniciar(self):
“”“insertar el mapa”""
self.mapa = pilas.actores.MapaTiled(‘mapa_desde_archivo2.tmx’)
“”“propiedades del protagonista del juego”""
self.maton = self.pilas.actores.Maton()
self.maton.figura.x = -288
self.maton.figura.y = 50
“”“propiedades del enemigo”""
self.mino = self.pilas.actores.Aceituna()
self.mino.x = 216
self.mino.x = [200,280]*50, 5
self.mino.y = 1
self.mino2 = self.pilas.actores.Aceituna()
self.mino2.x = 216
self.mino2.x = [150,280]*50, 5
self.mino2.y = 1
“”“llamar a la clase princesa”""
self.princesa = Princesa(pilas)
“”“llamar al metodo colisiones”""
self.pilas.colisiones.agregar(self.maton, self.mino, self.cuanto_toca_enemigo)
self.pilas.colisiones.agregar(self.maton, self.princesa, self.cuando_encuentra_princesa)
“”“mostrar el contador del tiempo”""
self.tiempo = 30
self.contador = pilas.actores.Texto("")
self.pilas.tareas.siempre(1, self.descontar_tiempo)
“”“llamar y reproducir la musica de fondo”""
self.musica_fondo = self.pilas.sonidos.cargar(‘musica.wav’)
self.musica_fondo.reproducir()
def cuanto_toca_enemigo(self):
“”“manipulas los sonidos”""
self.musica_fondo.detener()
self.gritar = self.pilas.sonidos.cargar(‘grito.wav’)
self.gritar.reproducir()
“”“desaparecer de la pantalla a los obtaculos/enemigos”""
self.maton.eliminar()
“”“asignar al tiempo (-1) para que para en el conteo”""
self.tiempo = - 1
“”“mostrar el resultado del juego y el menu”""
texto = pilas.actores.Texto(“GAME OVER”, y=100)
opciones = [
(‘Volver a Jugar’, self.primer_nivel),
(‘Volver al Menu’, self.volver_al_menu),
(‘Ayuda’, self.ayuda_juego),
(‘Salir’, self.salir_del_juego)
]
self.menu = self.pilas.actores.Menu(opciones, y=0)
Esta funcion se ejecutara 1 vez por segundo
"""funcion para que el cronometro vaya descontando"""
def descontar_tiempo(self):
self.contador.x=-280
self.contador.y=210
# Si puede seguir jugando, reducimos el contador.
if self.tiempo > 0:
self.tiempo = self.tiempo - 1
self.contador.texto = str(self.tiempo) # tiempo es un numero, asi que lo tenemos que convertir a texto con str.
# Si es tiempo de perder.
if self.tiempo == 0 :
self.tiempo = - 1
self.musica_fondo.detener()
self.contador.eliminar()
"""si el tiempo llego a 0 y el protagonista aun no salio, muestra el resultado y el meni """
texto = pilas.actores.Texto("Game Over", y=50)
opciones = [
('Nivel 1', self.primer_nivel),
('Volver al Menu', self.volver_al_menu),
('Ayuda', self.ayuda_juego),
('Salir', self.salir_del_juego)
]
self.menu = self.pilas.actores.Menu(opciones, y=0)
def cuando_encuentra_princesa(self):
"""Esta ubicada a la salida del laberinto, espera a que el
protagonista lo choque para dar el resultado que fue ganador"""
"""se detiene el sonido de fondo y se habilita el de ganador"""
self.musica_fondo.detener()
self.victoria_wav = self.pilas.sonidos.cargar('fanfarria.wav')
self.victoria_wav.reproducir()
"""El obstaculo desaparecede pantalla"""
self.mino.eliminar()
#self.contador.eliminar()
"""El tiempo se lo asigna (-1) para que pare el contador"""
self.tiempo = -1
self.texto = pilas.actores.Texto("FELICITACIONES!!!", y=100)
self.texto.escala=2
"""vuelve aparecer el menu """
opciones = [
('Volver a Jugar', self.primer_nivel),
('Siguiente Nivel', self.segundo_nivel),
('Ayuda', self.ayuda_juego),
('Salir', self.salir_del_juego)
]
self.menu = self.pilas.actores.Menu(opciones, y=0)
self.fondo.imagen = self.pilas.imagenes.cargar('encuentro.png')
self.fondo.imagen.x = -250
self.fondo.imagen.y = -200
"""metodos que dan funcionalidad al menu"""
def volver_al_menu(self):
self.pilas.escenas.EscenaMenu()
def primer_nivel(self):
self.pilas.escenas.Escena_1()
def segundo_nivel(self):
self.pilas.escenas.Escena_2()
def ayuda_juego(self):
self.pilas.escenas.Escena_4()
def salir_del_juego(self):
self.pilas.terminar()