Programme avec Pygame

Bonjour,

Je fais un stage en sciences cognitives et je suis un peut perdue car je dois coder mon expériences et je n’arrive pas à faire quelque chose ! J’ai une liste de sons ( des mots dit à l’orale) et j’ai fait une boucle pour que les participants entendent les sons un après l’autre avec un random.randint pour que ce soit aléatoire mais malheureusement mes sons ce superpose et je n’arrive pas à les faire ce suivre l’un après l’autre avec quelques seconde d’écart (3s)...comment faire ?

5 réponses

  1. Modérateur
    Bonjour,

    Puisque tu as commencé à écrire du code et pour que quelqu'un puisse te conseiller, il serait bon que tu postes ce code ci-dessous en lui affectant le format ad hoc avec la balise
    <>
    ▼
    .
    1. <import pygame>
      <import mixer>
      <import pygame.mixer>
      <import random>
      <import np>
      
      <pygame.mixer.init()>
      
      <amitie=pygame.mixer.Sound("C:/Users/melod/Documents/FAC/Master 1 Sciences Cognitives/Stage/AUDIO/TRACKS/amitié.wav")>
      
      <amour=pygame.mixer.Sound("C:/Users/melod/Documents/FAC/Master 1 Sciences Cognitives/Stage/AUDIO/TRACKS/amour.wav")>
      
      <balle=pygame.mixer.Sound("C:/Users/melod/Documents/FAC/Master 1 Sciences Cognitives/Stage/AUDIO/TRACKS/balle.wav")>
      
      <L=[amitie, amour,balle]>
      
      <while len(L)!=0:>
       <i=random.randint(0,len(L)-1)>
       <sound=L[i]>
       <L[i]=L[len(L)-1]> 
       <sound.play(0,0)>
       <L.pop(len(L)-1)>

      ▼

      Voici ce que j'ai déjà effectuer en terme de codage ! :)
      Merci pour le conseil même si j'ai pas réussie a le faire bien s'affiché
      1. Modérateur
        Quand tu édites ton code, il y a en haut de la fenêtre d'édition la balise que je t'ai indiquée ;-)

        Je modifie ton message...

        PS : pour l'emploi de la balise, d'abord tu tapes le code, tu le sélectionnes puis tu utilises la balise.
    2. Bonjour

      essaye de suivre une certaine logique dans ton code
      enfin c est juste un conseil .
      si tu déclare que tu as 100 point de vie et que tu perde 1 point de vie
      il te reste donc 99 point de vie
      simple suite logique
      1. Je comprend bien, j'ai enlevé petit a petit les sons de la liste pour éviter qu'il soit par la suite ouvert encore une fois . Ce qui m'empêche d'avancer c'est que tous mes morceaux ce lancent en même temps ou plutôt la boucle continue son chemin bien avant que le son ouvert soit terminé ce qui induit que tout ce superpose.

        J'aimerais trouver une ligne de code me permettant de demander a la boucle de s'effectuer seulement a chaque fin de lecture d'audio pour éviter ce chevauchement.
        1. Bonjour,
          vous une fois que vous avez lancé le son, vous pouvez utiliser get_busy() sur le resultat pour savoir si le son est terminé. Exemple :
          import pygame.time
          
          son = sound.play(0,0)
          while son.get_busy():
              pygame.time.wait(100)