si vous avez des sugestions
Code : Tout sélectionner
souris = 1
If MessageRequester("Bonjour", "Voulez-vous jouer avec le clavier ?", #pb_messagerequester_yesno) = 6 : souris = 0 : EndIf
Case_depart :
FakeReturn
Dimx = 80
Dimy = 60
Procedure SaveHightScore(filename.s, score, niveau, clavier, podium)
If OpenFile(0, filename)
Dim nom.s(podium)
Dim score.s(podium)
Dim niveau.s(podium)
Dim clavier.s(podium)
place = 0
For a = 1 To podium
nom(a) = ReadString()
score(a) = ReadString()
niveau(a) = ReadString()
clavier(a) = ReadString()
If score > Val(score(a)) And place = 0
place = a
EndIf
Next
CloseFile(0)
If place <> 0
name.s = InputRequester("Vous êtes " + Str(place) + " ème", "Entrez votre nom", "")
For a = podium To 1 Step -1
If a = place
nom(a) = name
score(a) = Str(score)
niveau(a) = Str(niveau)
clavier(a) = Str(clavier)
EndIf
If a > place
nom(a) = nom(a - 1)
score(a) = score(a - 1)
niveau(a) = niveau(a - 1)
clavier(a) = clavier(a - 1)
EndIf
Next
If CreateFile(0, filename)
For a = 1 To podium
WriteStringN(nom(a))
WriteStringN(score(a))
WriteStringN(niveau(a))
WriteStringN(clavier(a))
Next
CloseFile(0)
EndIf
EndIf
EndIf
ProcedureReturn place
EndProcedure
Declare Remplissage(Dimx, Dimy)
nombrennemi = 0
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7", 0)
End
EndIf
If OpenWindow(0, 0, 0, 640, 500, #PB_Window_MinimizeGadget | #PB_Window_WindowCentered, "Case") And OpenWindowedScreen(WindowID(), 0, 20, 640, 480, 0, 0, 0) = 0
MessageRequester("Attention", "l'ecran n'a pas pus être ouvert")
End
EndIf
score = 0
debut :
FakeReturn
nombrennemi = nombrennemi + 1
Dim ennemi(nombrennemi, 4)
For ene = 1 To nombrennemi
ennemi(ene, 4) = Random(1)
ennemi(ene, 3) = Random(1)
If ennemi(ene, 4) = 0 : ennemi(ene, 4) = -1 : EndIf
If ennemi(ene, 3) = 0 : ennemi(ene, 3) = -1 : EndIf
ennemi(ene, 2) = Random(56) + 3
ennemi(ene, 1) = Random(76) + 3
Next
Dim ecran(Dimx, Dimy)
For ligne = 1 To Dimy
For colonne = 1 To Dimx
If colonne = 1 Or ligne = 1 Or colonne = Dimx Or ligne = Dimy
ecran(colonne, ligne) = 1
EndIf
Next
Next
If CreateGadgetList(WindowID())
TextGadget(0, 0, 0, 640, 20, "", #PB_Text_Center | #PB_Text_Border)
EndIf
posx = 5
posy = 1
setcursorpos_(1, 1)
Repeat
event = WindowEvent()
ClearScreen(255, 255, 255)
If StartDrawing(ScreenOutput())
For ligne = 1 To Dimy
For colonne = 1 To Dimx
If ecran(colonne, ligne) = 1
Box((640 / dimx) * (colonne - 1), (480 / dimy) * (ligne - 1), (640 / dimx), (480 / dimy), RGB(0, 0, 0))
EndIf
If ecran(colonne, ligne) = 2
Circle((640 / dimx) * (colonne - 1) + (640 / dimx) / 2, (480 / dimy) * (ligne - 1) + (640 / dimx) / 2, (640 / dimx) / 2, RGB(0, 255, 0))
EndIf
Next
Next
Circle((640 / dimx) * (posx - 1) + (640 / dimx) / 2, (480 / dimy) * (posy - 1) + (640 / dimx) / 2, (640 / dimx) / 2, RGB(255, 0, 0))
StopDrawing()
EndIf
FlipBuffers()
ExamineKeyboard()
If souris = 0
droite = KeyboardPushed(#pb_key_right)
gauche = KeyboardPushed(#pb_key_left)
haut = KeyboardPushed(#pb_key_up)
bas = KeyboardPushed(#pb_key_down)
If droite And gauche = 0 And haut = 0 And bas = 0 And posx < Dimx : posx = posx + 1 : EndIf
If gauche And droite = 0 And haut = 0 And bas = 0 And posx > 1 : posx = posx - 1 : EndIf
If haut And droite = 0 And gauche = 0 And bas = 0 And posy > 1 : posy = posy - 1 : EndIf
If bas And droite = 0 And gauche = 0 And haut = 0 And posy < Dimy : posy = posy + 1 : EndIf
Else
If ((WindowMouseX() - 5) / (640 / Dimx) + 1) < posx And posx > 1 : posx = posx - 1
ElseIf ((WindowMouseX() - 5) / (640 / Dimx) + 1) > posx And posx < Dimx : posx = posx + 1
ElseIf ((WindowMouseY() - 45) / (480 / Dimy) + 1) < posy And posy > 1 : posy = posy - 1
ElseIf ((WindowMouseY() - 45) / (480 / Dimy) + 1) > posy And posy < Dimy : posy = posy + 1 : EndIf
EndIf
For e = 1 To nombrennemi
If ennemi(e, 1) = posx And ennemi(e, 2) = posy : Gosub perdu : EndIf
ecran(ennemi(e, 1), ennemi(e, 2)) = 0
Next
For e = 1 To nombrennemi
az = 0
If ecran(ennemi(e, 1) - 1, ennemi(e, 2)) = 1 Or ecran(ennemi(e, 1) + 1, ennemi(e, 2)) = 1
ennemi(e, 3) = -ennemi(e, 3)
az = 1
EndIf
If ecran(ennemi(e, 1), ennemi(e, 2) - 1) = 1 Or ecran(ennemi(e, 1), ennemi(e, 2) + 1) = 1
ennemi(e, 4) = -ennemi(e, 4)
az = 1
EndIf
If az = 0 And ((ecran(ennemi(e, 1) + 1, ennemi(e, 2) + 1) = 1 And ennemi(e, 3) = 1 And ennemi(e, 4) = 1) Or (ecran(ennemi(e, 1) + 1, ennemi(e, 2) - 1) = 1 And ennemi(e, 3) = 1 And ennemi(e, 4) = -1) Or (ecran(ennemi(e, 1) - 1, ennemi(e, 2) + 1) = 1 And ennemi(e, 3) = -1 And ennemi(e, 4) = 1) Or (ecran(ennemi(e, 1) - 1, ennemi(e, 2) - 1) = 1 And ennemi(e, 3) = -1 And ennemi(e, 4) = -1))
ennemi(e, 3) = -ennemi(e, 3)
ennemi(e, 4) = -ennemi(e, 4)
EndIf
ennemi(e, 1) = ennemi(e, 1) + ennemi(e, 3)
ennemi(e, 2) = ennemi(e, 2) + ennemi(e, 4)
Next
For e = 1 To nombrennemi
ecran(ennemi(e, 1), ennemi(e, 2)) = 2
Next
If ecran(posx, posy) = 1
noir.f = CallFunctionFast( @Remplissage(), Dimx, Dimy)
a.f = noir / 4800
a = a * 100
SetGadgetText(0, Str(noir) + "/4800 " + Str(a) + "% Score:" + Str(score + a) +" Niveau:" + Str(nombrennemi))
If a > 80
If MessageRequester("Bravo", "Vous avez gagné" + Chr(13) + "Voullez-vous continué à jouer ?", #PB_MessageRequester_YesNo) = 7
Gosub gagne
Else
ClearScreen(255, 255, 255)
score = a + score
Gosub debut
EndIf
EndIf
EndIf
ecran(posx, posy) = 1
Until KeyboardPushed(#pb_key_escape) Or event = #pb_event_closewindow
End
perdu :
MessageRequester("Dommage", "Vous avez perdu" + Chr(13) + "Vous avez quand même réalisé" + Chr(13) + "un score de: " + Str(a + score) + " !")
gagne :
SaveHightScore("Case.pref", score + a, nombrennemi, souris, 10)
CloseScreen()
CloseWindow(0)
If OpenWindow(1, 0, 0, 480, 390, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered, "Case Meilleurs Scores") And CreateGadgetList(WindowID())
If OpenFile(0, "Case.pref")
TextGadget(1, 20, 20, 200, 17, "PLACE : NOM", #PB_Text_Border)
TextGadget(1, 240, 20, 50, 17, "SCORE", #PB_Text_Border)
TextGadget(1, 310, 20, 50, 17, "NIVEAU", #PB_Text_Border)
TextGadget(1, 380, 20, 80, 17, "MANETTE", #PB_Text_Border)
For aze = 1 To 10
TextGadget(0, 20, aze * 30 + 20, 200, 17, Str(aze) + " : " + ReadString(), #PB_Text_Border)
TextGadget(0, 240, aze * 30 + 20, 50, 17, ReadString(), #PB_Text_Border | #PB_Text_Right)
TextGadget(0, 310, aze * 30 + 20, 50, 17, ReadString(), #PB_Text_Border | #PB_Text_Right)
If ReadString() = "0" : clavier.s = "Clavier" : Else : clavier.s = "Souris" : EndIf
TextGadget(0, 380, aze * 30 + 20, 80, 17, clavier, #PB_Text_Border | #PB_Text_center)
Next
CloseFile(0)
ButtonGadget(4, 20, 350, 160, 20, "REJOUER")
ButtonGadget(5, 300, 350, 160, 20, "QUITTER")
EndIf
EndIf
; AddKeyboardShortcut(1, #PB_Shortcut_return, 4)
; AddKeyboardShortcut(1, #PB_Shortcut_Escape, 5)
Repeat
event = WaitWindowEvent()
If event = #pb_event_gadget
Select EventGadgetID()
Case 4
CloseWindow(1)
Gosub Case_depart
Case 5
End
EndSelect
EndIf
; If EventMenuID() = 4
; CloseWindow(1)
; Gosub Case_depart
; ElseIf EventMenuID() = 5
; End
; EndIf
Until event = #pb_event_closewindow
End
Procedure Remplissage(Dimx, Dimy)
partie = 2
Dim list(200)
curseur = 1
Repeat
partie = partie + 1
For ligne = 1 To Dimy
For colonne = 1 To Dimx
If ecran(colonne, ligne) = 0
Break 2
EndIf
Next
Next
If colonne < Dimx And ligne < Dimy : ecran(colonne, ligne) = partie : Else : Break : EndIf
Repeat
nombre = 0
For ligne = 1 To Dimy
For colonne = 1 To Dimx
If ecran(colonne, ligne) = partie
If ligne > 1
If ecran(colonne, ligne - 1) = 0
ecran(colonne, ligne - 1) = partie
nombre = nombre + 1
EndIf
If colonne > 1 And ecran(colonne - 1, ligne - 1) = 0
ecran(colonne - 1, ligne - 1) = partie
nombre = nombre + 1
EndIf
If colonne < Dimx And ecran(colonne + 1, ligne - 1) = 0
ecran(colonne + 1, ligne - 1) = partie
nombre = nombre + 1
EndIf
EndIf
If colonne > 1 And ecran(colonne - 1, ligne) = 0
ecran(colonne - 1, ligne) = partie
nombre = nombre + 1
EndIf
If colonne < Dimx And ecran(colonne + 1, ligne) = 0
ecran(colonne + 1, ligne) = partie
nombre = nombre + 1
EndIf
If ligne < Dimy
If ecran(colonne, ligne + 1) = 0
ecran(colonne, ligne + 1) = partie
nombre = nombre + 1
EndIf
If colonne > 1 And ecran(colonne - 1, ligne + 1) = 0
ecran(colonne - 1, ligne + 1) = partie
nombre = nombre + 1
EndIf
If colonne < Dimx And ecran(colonne + 1, ligne + 1) = 0
ecran(colonne + 1, ligne + 1) = partie
nombre = nombre + 1
EndIf
EndIf
If ligne > 1
If ecran(colonne, ligne - 1) = 2 And list(curseur - 1) <> partie
list(curseur ) = partie
curseur = curseur + 1
EndIf
If colonne > 1 And ecran(colonne - 1, ligne - 1) = 2 And list(curseur - 1) <> partie
list(curseur ) = partie
curseur = curseur + 1
EndIf
If colonne < Dimx And ecran(colonne + 1, ligne - 1) = 2 And list(curseur - 1) <> partie
list(curseur ) = partie
curseur = curseur + 1
EndIf
EndIf
If colonne > 1 And ecran(colonne - 1, ligne) = 2 And list(curseur - 1) <> partie
list(curseur ) = partie
curseur = curseur + 1
EndIf
If colonne < Dimx And ecran(colonne + 1, ligne) = 2 And list(curseur - 1) <> partie
list(curseur ) = partie
curseur = curseur + 1
EndIf
If ligne < Dimy
If ecran(colonne, ligne + 1) = 2 And list(curseur - 1) <> partie
list(curseur ) = partie
curseur = curseur + 1
EndIf
If colonne > 1 And ecran(colonne - 1, ligne + 1) = 2 And list(curseur - 1) <> partie
list(curseur ) = partie
curseur = curseur + 1
EndIf
If colonne < Dimx And ecran(colonne + 1, ligne + 1) = 2 And list(curseur - 1) <> partie
list(curseur ) = partie
curseur = curseur + 1
EndIf
EndIf
EndIf
Next
Next
Until nombre = 0
nombre = 0
For ligne = 1 To Dimy
For colonne = 1 To Dimx
If ecran(colonne, ligne) = 0
nombre = 1
Break 2
EndIf
Next
Next
Until nombre = 0
noir = 0
For ligne = 1 To Dimy
For colonne = 1 To Dimx
a = ecran(colonne, ligne)
If a > 2
non = 1
For pos = 1 To curseur
If a = list(pos)
non = 0
EndIf
Next
ecran(colonne, ligne) = non
If non = 1 : noir = noir + 1 : EndIf
ElseIf a = 1 : noir = noir + 1
EndIf
Next
Next
ProcedureReturn noir
EndProcedure
Return
