Probleme lancement de mon jeux
Publié : ven. 10/sept./2010 12:12
Bonjour à tous,
alors voila je rencontre un leger soucis voici le code :
edit : j'avais oublier ceci a la fin DemoMenuGame() pour que sa demarre
mais la n'est pas mon problème
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.
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.