alors voila je rencontre un leger soucis voici le code :
Code : Tout sélectionner
Structure s_Resolution
largeur.i
hauteur.i
profondeur.i
TDR.i
fullscreen.i
EndStructure
#Fenetre = 0
#config = 0
Global Choix.s
Global ecran.s_Resolution
Global NewList ListEcran.s()
Procedure GetResolution()
If ExamineScreenModes()
While NextScreenMode()
ecran\largeur = ScreenModeWidth()
ecran\hauteur = ScreenModeHeight()
ecran\profondeur = ScreenModeDepth()
ecran\TDR = ScreenModeRefreshRate()
choix.s = Str(ecran\largeur)+"*"+Str(ecran\hauteur)+"*"+Str(ecran\profondeur)+"*"+Str(ecran\TDR)
AddGadgetItem(4,0,choix)
AddElement(ListEcran())
ListEcran() = Choix
Wend
EndIf
EndProcedure
Procedure SaveRes()
CreateFile(#config,"Config.cfg")
config.s = choix+"*"+Str(ecran\fullscreen)
;config.s = Str(ecran\largeur)+"*"+Str(ecran\hauteur)+"*"+Str(ecran\profondeur)+"*"+Str(ecran\TDR)+"*"+Str(ecran\fullscreen)
WriteString(#config,config)
CloseFile(#config)
EndProcedure
Procedure RecupRes()
If ReadFile(#config,"Config.cfg")
While Eof(#config) = 0
resolution.s =ReadString(#config)
Wend
ecran\largeur = Val(StringField(resolution,1,"*"))
ecran\hauteur = Val(StringField(resolution,2,"*"))
ecran\profondeur = Val(StringField(resolution,3,"*"))
ecran\TDR = Val(StringField(resolution,4,"*"))
ecran\fullscreen = Val(StringField(resolution,5,"*"))
If ecran\fullscreen = 1
SetGadgetState(6,#PB_Checkbox_Checked)
ElseIf ecran\fullscreen = 0
SetGadgetState(6,#PB_Checkbox_Unchecked)
EndIf
Else
ExamineDesktops()
ecran\largeur = DesktopWidth(0)
ecran\hauteur = DesktopHeight(0)
ecran\profondeur = DesktopDepth(0)
ecran\TDR = DesktopFrequency(0)
ecran\fullscreen = 0
EndIf
EndProcedure
Procedure RecupBonneRes()
compte.i = ListSize(ListEcran())-1
;Debug compte.i
ForEach ListEcran()
largeur.i = Val(StringField(ListEcran(),1,"*"))
hauteur.i = Val(StringField(ListEcran(),2,"*"))
profondeur.i = Val(StringField(ListEcran(),3,"*"))
TDR.i = Val(StringField(ListEcran(),4,"*"))
fullscreen.i = Val(StringField(ListEcran(),5,"*"))
If ecran\largeur = largeur And ecran\hauteur = hauteur And ecran\profondeur = profondeur And ecran\TDR = TDR
SetGadgetState(4,compte)
EndIf
compte = compte -1
Next
EndProcedure
Procedure Appliquer()
HideGadget(0,0)
HideGadget(1,0)
HideGadget(2,0)
HideGadget(4,1)
HideGadget(5,1)
HideGadget(6,1)
SaveRes()
EndProcedure
Procedure Option()
HideGadget(0,1)
HideGadget(1,1)
HideGadget(2,1)
HideGadget(4,0)
HideGadget(5,0)
HideGadget(6,0)
EndProcedure
Procedure.b MenuGame()
If OpenWindow(#Fenetre,10,0,400,300,"Choix de la résolution :",#PB_Window_ScreenCentered)
ButtonGadget(0,150,25,100,25,"Jouer")
ButtonGadget(1,150,125,100,25,"Option")
ButtonGadget(2,150,225,100,25,"Quitter")
ComboBoxGadget(4,25,10,200,25)
ButtonGadget(5,75,70,100,25,"Appliquer")
CheckBoxGadget(6,90,40,70,25,"Fullscreen")
HideGadget(4,1)
HideGadget(5,1)
HideGadget(6,1)
GetResolution()
RecupRes()
RecupBonneRes()
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 0
ProcedureReturn 1
Break
Case 1
Option()
Case 2
CloseWindow(0)
End
Case 5
choix = GetGadgetText(4)
ecran\largeur = Val(StringField(choix,1,"*"))
ecran\hauteur = Val(StringField(choix,2,"*"))
ecran\profondeur = Val(StringField(choix,3,"*"))
ecran\TDR = Val(StringField(choix,4,"*"))
If ecran\largeur <> 0
If GetGadgetState(6) = #PB_Checkbox_Checked
ecran\fullscreen = 1
ElseIf GetGadgetState(6) = #PB_Checkbox_Unchecked
ecran\fullscreen = 0
EndIf
Appliquer()
Else
MessageRequester("Veuillez choisir une résolution :","Vous n'avez pas sélectionné de résolution veuillez en sélectionner une.",#PB_MessageRequester_Ok)
EndIf
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre
CloseWindow(#Fenetre)
End
EndSelect
EndSelect
ForEver
EndIf
EndProcedure
Procedure OpenEcran()
If ecran\fullscreen = 1
OpenScreen(ecran\largeur,ecran\hauteur,ecran\profondeur,"Essai 1", #PB_Screen_WaitSynchronization,ecran\TDR)
ElseIf ecran\fullscreen = 0
OpenWindow(1,0,0,ecran\largeur,ecran\hauteur,"Essai 1",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(1),0,0,ecran\largeur,ecran\hauteur,1,0,0,#PB_Screen_WaitSynchronization)
EndIf
MouseLocate(ecran\largeur/2,ecran\hauteur/2)
EndProcedure
Procedure DemoMenuGame()
If InitEngine3D()
InitSprite()
InitMouse()
InitKeyboard()
Add3DArchive("Data\Model3D", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Texture", #PB_3DArchive_FileSystem)
#ApartMesh = 0
#ApartTex = 0
a.b = 1
While a
If MenuGame()
OpenEcran()
CloseWindow(#Fenetre)
Add3DArchive("Data\Model3D", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Texture", #PB_3DArchive_FileSystem)
progress.f = 0
OpenWindow(2,10,10,200,30,"Chargement en cours ...",#PB_Window_ScreenCentered|#PB_Window_Tool)
ProgressBarGadget(7,10,10,180,10,0,400,#PB_ProgressBar_Smooth)
SetGadgetState(7,progress)
c.i = 0
For a = 0 To 20
For b = 0 To 20
If LoadMesh(0,"robot.mesh")
LoadTexture(0,"r2skin.jpg")
CreateMaterial(0,TextureID(0))
CreateEntity(c,MeshID(0),MaterialID(0))
EntityMaterial(c,MaterialID(0))
EntityLocate(c,b * 40,0,a * 50)
AnimateEntity(c,"Walk")
progress = progress + 1
SetGadgetState(7,progress)
FreeTexture(0)
FreeMesh(0)
c = c + 1
Else
MessageRequester("Model3D introuvable.","Robot.mesh n'a pas put etre chargé.")
EndIf
Next
Next
FreeGadget(7)
CloseWindow(2)
CreateLight(0, RGB(255,255,255))
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,100)
Repeat
ClearScreen(RGB(0,0,0))
;Bouger()
;Wireframe()
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
FreeLight(0)
FreeCamera(0)
While c > 0
FreeEntity(c)
c = c - 1
Wend
If ecran\fullscreen = 0
CloseWindow(1)
ReleaseMouse(1)
ElseIf ecran\fullscreen = 1
CloseScreen()
EndIf
EndIf
Wend
Else
MessageRequester("Erreur.","Le Moteur 3D ne peut etre initialisé.",#PB_MessageRequester_Ok)
EndIf
EndProcedure
DemoMenuGame()

Mon problème est que si vous cliquer sur jouer ensuite vous quitter le jeux (avec echap) mais pas le menu et que vous re-cliquer sur jouer le jeu plante.
p.s: il cree un fichier config pour sauvegarder la resolution choisi penser à la supprimer.
Merci de vos réponse.