Utiliser la musique et le clavier ?
Publié : mar. 27/mai/2025 11:07
Bonjour à tous,
Je veux faire un jeu graphique nommé "Le grand voyage temporel" qui fonctionne très bien sans musique, pour que ce jeu soit plus immersif, je voudrais en ajouter, mais dans ce cas, je n'ai plus accès au clavier malgré le la touche Echape fonction.
Pouvez-vous m'aider à trouver la solution ? Dans ce cas, je vous en remercierai jamais assez !
J'ai essayé avec un Thread, mais ça ne fonctionne pas
Si vous avez besoin d'autre partie de code, je vous le fournirai.
Je veux faire un jeu graphique nommé "Le grand voyage temporel" qui fonctionne très bien sans musique, pour que ce jeu soit plus immersif, je voudrais en ajouter, mais dans ce cas, je n'ai plus accès au clavier malgré le la touche Echape fonction.
Pouvez-vous m'aider à trouver la solution ? Dans ce cas, je vous en remercierai jamais assez !
J'ai essayé avec un Thread, mais ça ne fonctionne pas
Si vous avez besoin d'autre partie de code, je vous le fournirai.
Code : Tout sélectionner
; 🔹 THREAD : Joue la musique en parallèle
Procedure LectureMusique(dummy)
PlaySound(0, #PB_Sound_MultiChannel, 30) ; Joue en boucle
Repeat
Delay(100) ; Pause légère pour éviter une surcharge CPU
Until SonActif = 0
StopSound(ChannelID) ; Arrête la musique quand le thread se termine
EndProcedure
; **Première énigme**
Procedure GererEnigme1()
LoadSound(0, Rep$ + "Musiques\Enigme1.ogg") ; Charge le son
SonActif = 1 ; Active la musique
ThreadMusique = CreateThread(@LectureMusique(), 0) ; Lance le thread musical
enigme$ = ~"Vous êtes projeté dans l'Egypte antique...\n\n"
enigme$ + ~"Que signifie le symbole du scarabée sacré?\n"
enigme$ + ~"A - Symbole de la richesse\n"
enigme$ + ~"Z - Représentation du soleil et de la renaissance"
AfficherSpriteEtTexte("Images\Enigme1.jpg", enigme$)
choix = 0
Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
SonActif = 0 ; Arrête la musique
WaitThread(ThreadMusique)
StopSound(ChannelID) ; ✅ Stopper la musique avant de quitter
FreeSound(0)
CloseScreen()
End ; 🚀 Quitte immédiatement le programme
EndIf
If KeyboardPushed(#PB_Key_A)
choix = 1
ElseIf KeyboardPushed(#PB_Key_Z)
choix = 2
EndIf
Delay(100)
Until choix <> 0
SonActif = 0 ; Stoppe la musique après réponse
WaitThread(ThreadMusique)
StopSound(ChannelID)
FreeSound(0)
If choix = 2
AfficherMessage("Bonne réponse! Le scarabée sacré symbolise le soleil et la renaissance.", "Prochaine énigme en approche...", "")
AttendreTouche()
GererEnigme2() ; 🔄 Passer à la prochaine énigme
Else
AfficherMessage("Oups! Mauvaise réponse...", "Réessaie !", "Indice : Il est lié au cycle du soleil.")
AttendreTouche()
GererEnigme1() ; 🔄 Force la progression
EndIf
EndProcedure