Comment faire pour avoir joué la musique dans une boucle ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

Comment faire pour avoir joué la musique dans une boucle ?

Message par Bernie »

Bonjour

petite question :

j'ai ceci :

Code : Tout sélectionner

PlaySound(#Music)
si je le mets en dehors d'une boucle Repeat/Until la musique se joue
par contre si je le mets dans la boucle j'ai plus de musique ?

Comment faire pour avoir joué la musique dans une boucle ?

merci
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment faire pour avoir joué la musique dans une boucl

Message par microdevweb »

Bonjour Bernie,

Tu ne doit pas placer PlaySound dans la boucle, mais bien en dehors par contre si tu veux que la musique soit jouée en boucle utilise #PB_Sound_Loop dans les option de PlaySound.

Dans la boucle par-contre tu peux utilisé PauseSound et ResumeSound ou StopSound. Si tu veux lancer un son dans la boucle utilise un flag pour ne le lancer que si il ne l'est pas déjà
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Bernie »

merci de ton explication
question pourquoi avec un flag ça marche dans la boucle?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Ar-S »

Comme pour le reste Bernie, comme pour le reste...
Avec des Flags tu peux bien faire ce que tu veux, même un playsound..

Un truc comme ça devrait marcher

Code : Tout sélectionner

Repeat
  
    Event = WindowEvent()
  
  If etat = #Jouer
    PlaySound(tonson)
    Etat = #Attente_Clic
    
  ElseIf Etat = #Pause
    PauseSound(tonson)
    Etat = #Attente_Clic
    
  ElseIf Etat = #Resume
    ResumeSound(tonson)
    Etat = #Attente_Clic
    
  Else
    StopSound(tonson)
    Etat = #Attente_Clic
    
  EndIf
  
  If Event = #PB_Event_Gadget
           
   Select EventGadget()
      Case #BOUTON_PLAY
        etat = #Jouer
        
      Case #BOUTON_PAUSE
        etat = #Pause
        
        ; etc...
        
        
  EndSelect
  
  EndIf
  
Until event = #PB_Event_CloseWindow

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Bernie »

Merci Ar-S de tes conseils
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Marc56 »

Y-a-t'il une raison d'utiliser des Else / ElseIf plutôt qu'un Select / Case ?

Question récurrente dans tous les langages, qu'en est-il dans PB ?

:?:
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Zorro »

je prone les Select case c'est sur !! (du moins pour les Choix .. )

le Elseif est utile non pas pour des choix comme ici
mais pour une condition .... car c'est d'abord une évaluation d'une condition .. Sinon SI
dans les Case la condition a été en principe evaluée au debut ...

enfin chacun fait comme il veux , mais les Cases
sont plus elegant je trouve :)

je pense meme qu'ils sont plus rapide , moins de calcul de la part de l'ordi
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Fig »

Je n'ai pas le temps de vérifier mais en assembleur select est plus rapide si je me rappelle bien... Mais bon, il faut vraiment que ce soit critique ... :roll:
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Marc56 »

Je crois aussi avoir lu que le Select / Case est plus rapide. Certains tests (dans je ne sais quel langage) montraient que cette différence se situait à partir de 5 choix.

Mais effectivement, comme l'indique Zorro, la raison principale du choix d'un ElseIf est si on veut reformuler une nouvelle condition à chaque étape.
(Chose qu'on peut aussi faire avec un sélect, mais il faut alors rajouter des If après chaque Case)

En résumé:
Select / Case : Une seule condition et on joue sur le résultat de cette seul condition
Else / ElseIf : Une condition initiale, puis possibilité d'émettre d'autres conditions à chaque pas.

Dans un cas comme dans l'autre, en PB, la sortie de boucle est implicite dès que la condition est remplie (contrairement au C où l'équivalent du Select: Switch nécessite un break, sinon toutes les conditions sont testées)

:wink:
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Zorro »

Marc56 a écrit : (contrairement au C où l'équivalent du Select: Switch nécessite un break, sinon toutes les conditions sont testées)

:wink:
tu peux simuler ça en Pb avec la directive "continue" dans select-case
continue fait passer au Case suivant (de memoire ) ;)
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Marc56 »

(contrairement au C où l'équivalent du Select: Switch nécessite un break, sinon toutes les conditions sont testées)
...
tu peux simuler ça en Pb avec la directive "continue" dans select-case
Il semble que ce ne soit pas valable dans ce cas, mais pour d'autres fonctions:
Continue
Description
Continue permet de passer directement à la prochaine itération dans l'une des boucles suivantes: Repeat, For, ForEach et While.
:?
J'ai pas testé dans un Select, peut-être que ça marche ?
On peut de toute façons faire un horrible Goto :twisted: :mrgreen:
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Zorro »

ha oui , peut etre que je confond

merci pour le rafraichissement :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Ar-S »

Et ben, je viens de découvrir la fonction "Continue"
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Marc56 »

Ar-S a écrit :Et ben, je viens de découvrir la fonction "Continue"
Fais comme moi: quand je recherche la syntaxe d'une commande, j'en profite pour (re)mettre à niveau mes neurones en regardant les autres fonctions de la lib.

Je vais même jusqu'à relire les chapitres généraux (« Thèmes généraux », « Mots clefs de base ») sur une tablette le soir pour m'occuper pendant la pub TV :P

http://www.purebasic.com/french/documen ... index.html
Et encore un coup de pommade aux auteur(s) et mainteneurs de cette doc, car quand on compare au bazar que font souvent les professionnels d'autres langages. Chapeau à PB doc
8)
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

Re: Comment faire pour avoir joué la musique dans une boucl

Message par Bernie »

Bonsoir Ar-S

j'ai un probleme de Flag avec la musique :

https://www.dropbox.com/s/ep05dfyur9nct ... s.zip?dl=0
Répondre