Necesito ayuda en mi juego no puedo hacer que funcione los botones así que hice que el sonido funcione cuando se toque clic en arranque la música pero tengo el problema que si apreto mas de una vez la música inicia multiples veces les pido ayuda, haber si alguien puede decir como hacer para que solo arranque la música una vez sin importar cuantas veces toque clic, o alguna forma de hacer para que la musica arranque al comenzar el juego por que no se como hacerlo. Acá les paso mi código para que vean como lo tengo hecho:
import pilasengine
pilas = pilasengine.iniciar()
tiempo = 50
contador = pilas.actores.Texto(“50”)
contador.x = 300
contador.y = 230
music = pilas.sonidos.cargar(“untitled.wav”)
def musica(evento):
music.reproducir()
pilas.escena_actual().click_de_mouse.conectar(musica)
winner = pilas.actores.ActorInvisible()
winner.escala = 0.2
winner.x = -308
winner.y = 226
###Grilla_Prota###
class Mini(pilasengine.actores.Actor):
def iniciar(self):
self.imagen = pilas.imagenes.cargar_animacion("emilio.png",4,4)
self.escala = 0.60
self.imagen.definir_animacion('parado', [2], 10)
self.imagen.definir_animacion('sur', [4,5,6,7], 10)
self.imagen.definir_animacion('caminar', [12,13,14,15], 10)
self.imagen.definir_animacion('norte', [0,1,2,3], 10)
self.figura = self.pilas.fisica.Rectangulo(305, -228, 10)
self.figura.escala_de_gravedad = 0
self.figura.sin_rotacion = True
self.hacer_inmediatamente('ComportamientoNormal')
###Movimiento_Figura_fisica###
def actualizar(self):
velocidad = 2
self.x = self.figura.x
self.y = self.figura.y
if self.pilas.control.arriba:
self.figura.velocidad_y = velocidad
if self.pilas.control.abajo:
self.figura.velocidad_y = -velocidad
if self.pilas.control.derecha:
self.figura.velocidad_x = velocidad
self.espejado = False
elif self.pilas.control.izquierda:
self.figura.velocidad_x = -velocidad
self.espejado = True
else:
self.figura.velocidad_x = 0
#####estas dos lineas son el seguimiento con la camara#####
pilas.escena_actual().camara.x=self.x
pilas.escena_actual().camara.y=self.y
######Limite_Mapa########
if self.x > 305:
self.x = 305
if self.x < -305:
self.x = -305
if self.y > 228:
self.y = 228
if self.y < -228:
self.y = -228
self.imagen.avanzar()
####Clases_Movimiento####
class ComportamientoNormal(pilasengine.comportamientos.Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
self.receptor.imagen.cargar_animacion('parado')
####esta linea de aqui es el aumento#######
pilas.camara.escala = 6
def actualizar(self):
self.receptor.figura.velocidad_x = 0
self.receptor.figura.velocidad_y = 0
if pilas.control.derecha or pilas.control.izquierda:
self.receptor.hacer_inmediatamente('ComportamientoCaminar')
if pilas.control.arriba:
self.receptor.hacer_inmediatamente('ComportamientoNorte')
if pilas.control.abajo:
self.receptor.hacer_inmediatamente('ComportamientoSur')
class ComportamientoCaminar(pilasengine.comportamientos.Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
self.receptor.imagen.cargar_animacion('caminar')
def actualizar(self):
if not pilas.control.derecha and not pilas.control.izquierda:
self.receptor.hacer_inmediatamente('ComportamientoNormal')
class ComportamientoNorte(pilasengine.comportamientos.Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
self.receptor.imagen.cargar_animacion('norte')
def actualizar(self):
if not pilas.control.arriba:
self.receptor.hacer_inmediatamente('ComportamientoNormal')
if pilas.control.derecha and pilas.control.izquierda:
self.receptor.hacer_inmediatamente('ComportamientoCaminar')
class ComportamientoSur(pilasengine.comportamientos.Comportamiento):
def iniciar(self, receptor):
self.receptor = receptor
self.receptor.imagen.cargar_animacion('sur')
def actualizar(self):
if not pilas.control.abajo:
self.receptor.hacer_inmediatamente('ComportamientoNormal')
if pilas.control.derecha and pilas.control.izquierda:
self.receptor.hacer_inmediatamente('ComportamientoCaminar')
def descontar_tiempo():
global tiempo
tiempo = tiempo - 1
# Si puede seguir jugando, reducimos el contador.
if tiempo > 0:
contador.texto = str(tiempo) # tiempo es un numero, asi que lo tenemos que convertir a texto con str.
# Si es tiempo de perder.
if tiempo == 0:
mini.eliminar()
contador.eliminar()
texto = pilas.actores.Texto("Game Over")
le indicamos a pilas que llame a la funcion cada 1 segundo
pilas.tareas.siempre(1, descontar_tiempo)
###Vinculaciones###
pilas.comportamientos.vincular(ComportamientoNormal)
pilas.comportamientos.vincular(ComportamientoCaminar)
pilas.comportamientos.vincular(ComportamientoNorte)
pilas.comportamientos.vincular(ComportamientoSur)
pilas.actores.vincular(Mini)
mini = pilas.actores.Mini()
fondo = pilas.actores.MapaTiled(‘laberinto_i2.tmx’)
fondo.z = 100
pilas.fondos.Cesped()
pilas.avisar(“resulve el laberinto antes que termine el tiempo”)
pilas.ejecutar()