• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Duda básica con Python

Elaphe

De profesión Chapuzas
Registrado
8 Mar 2016
Mensajes
370
Puntos
43
Hola. Estoy modificando una app de un juego que está escrita en Python. En un punto del código creo una condición para reproducir un sonido con Soundplay. Dicho código está dentro de una sección en la que el juego comprueba constantemente la condición una y otra vez para, si se cumple, reproducir el sonido inmediatamente. El problema es que a veces se me reproduce el sonido de forma muy seguida e incluso solapándose varias reproducciones. Necesitaría una manera de que el código no reproduzca el sonido a menos que hayan pasado unos segundos desde la última reproducción. No tengo ni idea de Python, así que estuve mirando ayudas y probé algunas cosas. Por ejemplo, probé con Sleep, pero me pausa todo el juego (en vez del hilo en cuestión). También probé a cambiar block = false por true, pero entonces el sonido no se reproduce. En fin, alguna idea. Os pego el trozo de código.

Código:
    if Angle > Drift and carKMH > MinKMH:
        if not sound_played:
            playsound(SoundFile, block = False)
            sound_played = True
            return
    else:
        sound_played = False
        return
 
Hola. Estoy modificando una app de un juego que está escrita en Python. En un punto del código creo una condición para reproducir un sonido con Soundplay. Dicho código está dentro de una sección en la que el juego comprueba constantemente la condición una y otra vez para, si se cumple, reproducir el sonido inmediatamente. El problema es que a veces se me reproduce el sonido de forma muy seguida e incluso solapándose varias reproducciones. Necesitaría una manera de que el código no reproduzca el sonido a menos que hayan pasado unos segundos desde la última reproducción. No tengo ni idea de Python, así que estuve mirando ayudas y probé algunas cosas. Por ejemplo, probé con Sleep, pero me pausa todo el juego (en vez del hilo en cuestión). También probé a cambiar block = false por true, pero entonces el sonido no se reproduce. En fin, alguna idea. Os pego el trozo de código.

Código:
    if Angle > Drift and carKMH > MinKMH:
        if not sound_played:
            playsound(SoundFile, block = False)
            sound_played = True
            return
    else:
        sound_played = False
        return
Buenas,
con Python ni idea pero con Unity y C#, creas un scriptable object y luego un AudioManager para poder gestionar los sonidos y así instancias el audio en el script del gameobject que quieras.


Un saludo
 
No tengo mucha idea de Python, pero podrías probar a jugar con el tiempo/hora/fecha.

Por ejemplo, cuando suene el sonido, quizás puedas almacenar la última vez que sonó en alguna variable que persista en el tiempo.

Entonces, para entrar al if se tiene que dar la condición de que el sonido pueda emitirse y que haya pasado x segundos desde la última vez que sonó.

Luego al entrar al if, suena el sonido y de actualiza la variable que almacena la última vez que sonó dicho sonido.
 
No tengo mucha idea de Python, pero podrías probar a jugar con el tiempo/hora/fecha.

Por ejemplo, cuando suene el sonido, quizás puedas almacenar la última vez que sonó en alguna variable que persista en el tiempo.

Entonces, para entrar al if se tiene que dar la condición de que el sonido pueda emitirse y que haya pasado x segundos desde la última vez que sonó.

Luego al entrar al if, suena el sonido y de actualiza la variable que almacena la última vez que sonó dicho sonido.

Sí, ando intentando hacer algo así como lo que dices, aunque todavía no he conseguido que funcione (después de varias decenas de intentos esta noche). A ver si mañana hay más suerte.
 
Arriba