Page 1 sur 2
Comment faire pour avoir joué la musique dans une boucle ?
Publié : sam. 04/juin/2016 16:21
par Bernie
Bonjour
petite question :
j'ai ceci :
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
Re: Comment faire pour avoir joué la musique dans une boucl
Publié : sam. 04/juin/2016 16:31
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à
Re: Comment faire pour avoir joué la musique dans une boucl
Publié : sam. 04/juin/2016 16:45
par Bernie
merci de ton explication
question pourquoi avec un flag ça marche dans la boucle?
Re: Comment faire pour avoir joué la musique dans une boucl
Publié : sam. 04/juin/2016 17:18
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
Re: Comment faire pour avoir joué la musique dans une boucl
Publié : sam. 04/juin/2016 17:55
par Bernie
Merci Ar-S de tes conseils
Re: Comment faire pour avoir joué la musique dans une boucl
Publié : sam. 04/juin/2016 18:06
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 ?

Re: Comment faire pour avoir joué la musique dans une boucl
Publié : sam. 04/juin/2016 18:25
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
Re: Comment faire pour avoir joué la musique dans une boucl
Publié : dim. 05/juin/2016 8:12
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 ...

Re: Comment faire pour avoir joué la musique dans une boucl
Publié : dim. 05/juin/2016 8:31
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)

Re: Comment faire pour avoir joué la musique dans une boucl
Publié : dim. 05/juin/2016 13:30
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)

tu peux simuler ça en Pb avec la directive "continue" dans select-case
continue fait passer au Case suivant (de memoire )

Re: Comment faire pour avoir joué la musique dans une boucl
Publié : dim. 05/juin/2016 13:38
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

Re: Comment faire pour avoir joué la musique dans une boucl
Publié : dim. 05/juin/2016 13:39
par Zorro
ha oui , peut etre que je confond
merci pour le rafraichissement

Re: Comment faire pour avoir joué la musique dans une boucl
Publié : dim. 05/juin/2016 14:31
par Ar-S
Et ben, je viens de découvrir la fonction "Continue"
Re: Comment faire pour avoir joué la musique dans une boucl
Publié : dim. 05/juin/2016 15:55
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
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

Re: Comment faire pour avoir joué la musique dans une boucl
Publié : lun. 06/juin/2016 17:56
par Bernie
Bonsoir Ar-S
j'ai un probleme de Flag avec la musique :
https://www.dropbox.com/s/ep05dfyur9nct ... s.zip?dl=0