■ Je pense que tu ne mets pas fin à ton code qui lance game.exe.
Alors je vais décomposer ce que j'ai dit par deux fois en reprenant ton test de la barre d'espace.
Bonne idée et quitte à tout refaire ....
Dans ce topic je t'ai dit que tu pouvais réunir tes deux codes en un seul.
J'ai dit que tu peux tester dans ton jeu une variable qui prendra la valeur Vrai ou Faux pour déterminer si le jeu a commencé Oui ou Non.
Code : Tout sélectionner
;**** Space Shooter ****
;*** Code by JBernard 2016 ***
EnableExplicit
UsePNGImageDecoder()
UseOGGSoundDecoder()
;--Initialisation--
If InitSprite()=0 Or InitKeyboard()=0 Or InitSound()=0
MessageRequester("Erreur", "Impossible d'initialiser le programme ")
EndIf
;--Constantes--
Enumeration Form
#Main_Form
EndEnumeration
Enumeration Games
#Text_Titre
#Etoile0
#Etoile1
#Text_Ombre
#Text_Press
#Music
#Ship
EndEnumeration
;--Variable globales
Global gI,gW=800,gH=600,gEventWindow,gFont1,gFont2,gTimeElapsed=ElapsedMilliseconds(),TextOn.b=#False
Global FolderImages.s="Data\"
Global DebutJeu.b = #False
;Vaisseau
Global ShipX = 350, ShipY = 300
;--Nombre d'étoiles
#MaxEtoiles= 99
;--Chargement de la musique
LoadSound(#Music,FolderImages +"Music.ogg",#PB_Sound_Streaming)
;--Chargement de la police pour les textes
gFont1 = LoadFont(0, "Arial", 50, #PB_Font_Bold )
gFont2 = LoadFont(1, "Arial", 30, #PB_Font_Bold )
;--Structure pour les infos des étoiles
Structure etoile
PosX.i
PosY.i
Vitesse.i
Id.b
EndStructure
RGB(0, 0, 255)
;--Création d'un tableau pour nos étoiles
Global Dim etoiles.etoile(#MaxEtoiles)
;--Les procédures
Procedure CreateText()
CreateSprite(#Text_Titre,600,100,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#Text_Titre))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,1090,80,RGBA(0,0,0,0))
DrawingFont(gFont1)
DrawText(20,10,"SPACE SHOOTER ",RGBA(255,0,0,255), RGBA(0,0,0,0));
StopDrawing()
;---
CreateSprite(#Text_Ombre,600,100,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#Text_Ombre))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,1090,80,RGBA(0,0,0,0))
DrawingFont(gFont1)
DrawText(20,10,"SPACE SHOOTER ",RGBA(255,255,255,255), RGBA(0,0,0,0));
StopDrawing()
;---
CreateSprite(#Text_Press,600,100,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#Text_press))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,1090,80,RGBA(0,0,0,0))
DrawingFont(gFont2)
DrawText(20,10,"Press SpaceBar ",RGBA(255,255,255,255), RGBA(0,0,0,0));
StopDrawing()
EndProcedure
;--On dessine les étoiles
Procedure CreationEtoiles()
CreateSprite(#Etoile0,2,2)
CreateSprite(#Etoile1,2,2)
;--Dessin de l'étoile blanche
StartDrawing(SpriteOutput(#Etoile0))
Box(0, 0, 2, 2, $FFFFFF)
StopDrawing()
;--Dessin de l'étoile rouge
StartDrawing(SpriteOutput(#Etoile1))
Box(0, 0, 2, 2, $A9A9A9)
StopDrawing()
EndProcedure
;-- Initialisation des paramètres de départ des étoiles
Procedure Initialisation()
With etoiles(gI)
For gI =0 To #MaxEtoiles
\PosY = Random(gH)
\PosX =Random(gW,0)
\Id = Random(2,1)
\Vitesse = Random(8,2)
Next
EndWith
EndProcedure
Procedure Deplacement()
For gI =0 To #MaxEtoiles
With etoiles(gI)
DisplaySprite(\id, \PosX, \PosY)
\PosY + \Vitesse
If \PosY >=gW
\PosY -gW
EndIf
EndWith
Next
EndProcedure
;--- Création de la fenetre et de l'écran
OpenWindow(#Main_Form,0,0,gW,gH,"Space Shooters Menu ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Form),0,0,gW,gH)
;---Chargement du l'image du sprite
LoadSprite(#Ship,FolderImages + "Ship.png",#PB_Sprite_AlphaBlending)
PlaySound(#Music ,#PB_Sound_Loop ,30)
CreateText()
CreationEtoiles()
Initialisation()
;--- Boucle du programme
Repeat
Repeat
gEventWindow=WindowEvent()
Select gEventWindow
Case #PB_Event_CloseWindow
End
EndSelect
Until gEventWindow=0
ClearScreen(RGB(0, 0, 0))
Deplacement()
;Affichage du vaisseau
DisplayTransparentSprite(#Ship, ShipX, ShipY)
;SI LE JEU N'A PAS COMMENCE
If DebutJeu = #False
;Affichage du texte
DisplayTransparentSprite(#Text_Titre, 100, 150)
DisplayTransparentSprite(#Text_Ombre, 100, 155)
;--On fait clignoter le texte "Press Space"
If TextOn
DisplayTransparentSprite(#Text_Press, 235, 480)
EndIf
If (ElapsedMilliseconds()-gTimeElapsed)>500
If TextOn
TextOn=#False
Else
TextOn=#True
EndIf
gTimeElapsed=ElapsedMilliseconds()
EndIf
EndIf
ExamineKeyboard()
;--Si on appuie sur la barre d'espacement on stop la musique
; ON SIGNALE AU CODE QUE LE JEU A COMMENCE
If KeyboardPushed(#PB_Key_Space)
StopSound(#Music)
DebutJeu = #True
EndIf
If DebutJeu = #True
If KeyboardPushed(#PB_Key_Left) And ShipX > 0
ShipX - 2
EndIf
If KeyboardPushed(#PB_Key_Right) And ShipX < ScreenWidth() - SpriteWidth(#Ship)
ShipX + 2
EndIf
EndIf
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)
End