tu préfère les Rosbifsfalsam a écrit :M'en fou j'irais proposer mon jeu sur le forum anglais ou là je rencontrerai des membres enthousiastes qui me diront "Whaou it's great, it's amazing"










tu préfère les Rosbifsfalsam a écrit :M'en fou j'irais proposer mon jeu sur le forum anglais ou là je rencontrerai des membres enthousiastes qui me diront "Whaou it's great, it's amazing"
falsam a écrit :Parfois oui. Si je ne me réfère qu'au jeux (MMO) que je fréquente en ligne, les communautés francophones sont des catastrophes : Constamment en train de se taper sur la gueule.
Code : Tout sélectionner
Debug Scoring(SortString("331116"))
Debug Scoring(SortString("662261"))
Debug Scoring(SortString("226666"))
Non et se serait impossible.Ar-S a écrit :Faut faire 10 000 avec un jet ?
Toujours pas terminé mais un débutAr-S a écrit :Ah ok il me manquait l'élément "jeu pas terminé"
Code : Tout sélectionner
EnableExplicit
Enumeration Fonts
#FontGlobal
EndEnumeration
Enumeration Window
#Mainform
EndEnumeration
Enumeration Gadget
#Roll
#Place
#Reset
#NewPlayer
#HighScore
#PlaceScore
#RollScore
#SelMessage
#GameMessage
#Life
EndEnumeration
Enumeration Extra 100
#EndStage
#EndLife
#EndGame
EndEnumeration
;Les 6 dés
Structure sDice
id.i ;Identifiant gadget représentant le dé
Num.i ;Numéro entre 1 et 6
Sel.b ;0:Pas sélectionné, 1:Selectionné, 2:Plus sélectionnable
EndStructure
Global NewList Dice.sDice()
;Liste des joueurs
Structure sPlayer
UserName.s
HightScore.i
PlaceScore.i
Live.i
EndStructure
Global NewList Players.sPlayer()
Global SubmitRoll.s = "" ;Chaine contenant les dés qui sera soumise au scoring
Global RollScore = 0 ;Score Rollé
Global SubmitScore = 0 ;Score obtenu pas la selection
Declare Start()
Declare OnDiceSelect()
Declare OnPlay()
Declare OnReset()
;Routine calculant le score donné par les dés avant et aprés avoir lancer les dés
IncludeFile "scoring.pb"
Start()
;Le jeu démarre
Procedure Start()
Protected n = 0;Index pour la création des dés
LoadFont(#FontGlobal, "", 11)
SetGadgetFont(#PB_Default, FontID(#FontGlobal))
OpenWindow(#Mainform, 0, 0, 500, 250, "Greedy", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
;Affichage des 6 dés
;Les buttons gadgets seront remplacés par des canvas pour l'affichage des dés
For n = 0 To 5
AddElement(Dice())
Dice()\id = ButtonGadget(#PB_Any, 10 + n*50, 10, 40, 40, "?", #PB_Button_Toggle)
SetGadgetData(Dice()\id, n)
DisableGadget(Dice()\id, #True)
BindGadgetEvent(Dice()\id, @OnDiceSelect())
Next
;Affichage du plus haut score atteint par le joueur
TextGadget(#PB_Any, 350, 20, 80, 22, "High Score")
TextGadget(#HighScore, 440, 20, 50, 22, "0", #PB_Text_Right)
;Affichage du score Placé
TextGadget(#PB_Any, 350, 50, 80, 22, "Place Score")
TextGadget(#PlaceScore, 440, 50, 50, 22, "0", #PB_Text_Right)
;Affichage du score Rollé
TextGadget(#PB_Any, 350, 80, 80, 22, "Roll Score")
TextGadget(#RollScore, 440, 80, 50, 22, "0", #PB_Text_Right)
;Affichage du nombre de vies
TextGadget(#PB_Any, 350, 110, 80, 22, "Life")
TextGadget(#Life, 440, 110, 50, 22, "0", #PB_Text_Right)
;Button Roll
ButtonGadget(#Roll, 10, 100, 80, 22, "Roll")
BindGadgetEvent(#Roll, @OnPlay())
;Button Place
ButtonGadget(#Place, 110, 100, 80, 22, "Place")
DisableGadget(#Place, #True)
BindGadgetEvent(#Place, @OnPlay())
;Button Reset
ButtonGadget(#Reset, 210, 100, 80, 22, "Reset")
DisableGadget(#Reset, #True)
BindGadgetEvent(#Reset, @OnReset())
;Message d'information sur le jeu
TextGadget(#GameMessage, 10, 140, 480, 22, "Pour commencer, cliquer sur Roll.")
;Score des dés en cours de sélection
TextGadget(#SelMessage, 10, 170, 480, 50, "Vous devez ensuite cliquer sur Roll autant de fois qu'il le faut pour atteindre 1000 points afin d'entrer dans la partie.")
;Dans cette version le jeu est mono-joueur
AddElement(Players())
Players()\UserName = "Player"
;Début du jeu
OnReset()
Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndProcedure
;Un ou plusieurs dés sont sélectionnés
Procedure OnDiceSelect()
SubmitRoll = "" ;Chaine qui sera soumise au scroring
SubmitScore = 0 ;Score obtenu par la chaine soumise au scoring
;Quel est le dé qui a étè sélectionné ?
SelectElement(Dice(), GetGadgetData(EventGadget()))
If Dice()\Sel = 0
Dice()\Sel = 1 ;Le dé est sélectionné
Else
Dice()\Sel = 0 ;Le dé n'est plus sélectionné
EndIf
;Constitution de la chaine qui sera soumise au scroring
;Cette chaine est composée des dés sélectionnés
ForEach Dice()
If Dice()\Sel = 1 ;Un dés est sélectionné
SubmitRoll + Str(Dice()\Num) ;Ajout du dé dans la chaine de scoring
EndIf
Next
;Soumission de la selection de dés au scoring
If SubmitRoll <> ""
SubmitScore = Scoring(SortString(SubmitRoll))
EndIf
;Affichage des points retournée par le scoring
SetGadgetText(#SelMessage, "Votre sélection donne " + Str(SubmitScore) + " points." + #CRLF$ +
"Vous pouvez Roller ou Placer (Si vous avez cette option)")
;Est que les points obtenus par cette soumission peuvent être placer ?
Players()\PlaceScore = Val(GetGadgetText(#PlaceScore))
RollScore = Val(GetGadgetText(#RollScore))
;Régle : Pour entrer dans la partie il faut faire au moins 1000 points
;Peut on autoriser à placer les points obtenus ?
If Players()\PlaceScore + RollScore + SubmitScore >= 1000
DisableGadget(#Place, #False) ;Le score provisoire peut être placer
Else
DisableGadget(#Place, #True)
EndIf
;Le joueur peut'il roller ?
If SubmitScore <> 0
DisableGadget(#Roll, #False) ;Oui
Else
DisableGadget(#Roll, #True) ;Non car il n'a pas sélectionner de dé
EndIf
EndProcedure
;Le joueur a Rollé ou Placé des points.
;Des dés sont sélectionnés par un joueur qui décide de
; - Place : Placer les dés dans son score
; - Roll : De continuer à jouer pour augmenter son score rollé
Procedure OnPlay()
Protected Play = EventGadget() ;#Role = 0 & #Place = 1
Protected DiceSelect.i = 0
Protected RoleTest.s, PossiblePoints = 0
Protected n = 0
;-Tronc commun
DisableGadget(#Roll, #True)
DisableGadget(#Place, #True)
Players()\PlaceScore = Val(GetGadgetText(#PlaceScore))
RollScore = Val(GetGadgetText(#RollScore))
SubmitRoll=""
SetGadgetText(#SelMessage, "")
;Mise à jour du Score Rollé
;SubmitScore est misé à jour depuis OnDiceSelect()
SetGadgetText(#RollScore, Str(RollScore + SubmitScore))
;Combien de dés sont déja sélectionnés?
ForEach Dice()
If Dice()\Sel = 1 Or Dice()\Sel = 2 ;Le dés a été selectionné
Dice()\Sel = 2 ;Il ne pourra plus être selectionner
DiceSelect + 1
DisableGadget(Dice()\id, #True)
EndIf
Next
;- Action Roll : Il y a t'il encore des dés pouvant donner des points ?
If Play = #Roll And DiceSelect < 6
ForEach Dice()
If Dice()\Sel = 0
DisableGadget(Dice()\id, #False) ;Le dés est selectionnable
Dice()\Num = Random(6, 1) ;Recherche du prochain numéro
RoleTest + Str(Dice()\Num) ;Ajout de ce numéro dans la chaine de scoring
SetGadgetText(Dice()\id, Str(Dice()\Num)) ;Affichage du numéro de dés
EndIf
Next
SetGadgetText(#SelMessage, "A présent, sélectionner vos dés.")
If RoleTest <> ""
PossiblePoints = Scoring(SortString(RoleTest))
EndIf
If PossiblePoints = 0 ;Regardons si ça donne quelques points ?
;Ha non: Quel dommage :p
SetGadgetText(#GameMessage, "Vous venez de perdre " + GetGadgetText(#RollScore) + " points.")
;Les dés sont inactifs
ForEach Dice()
DisableGadget(Dice()\id, #True)
Next
;Le joueur perd une vie sur les 3 de départ
Players()\Live - 1
SetGadgetText(#Life, Str(Players()\Live))
If Players()\Live = 0
Play = #EndLife ;Plus de vie
Else
SetGadgetText(#SelMessage, "Attention surveillez le nombre de vie")
EndIf
DisableGadget(#Reset, #False)
Else
SetGadgetText(#GameMessage, "Vous pouvez faire " + PossiblePoints + " points au maximum.")
EndIf
DisableGadget(#Roll, #True)
DisableGadget(#Place, #True)
EndIf
;Action Roll et tous les dés sont selectionnés
If Play = #Roll And DiceSelect = 6
SubmitScore = 0
ForEach Dice()
Dice()\Sel = 0
If Play = 0
Dice()\Num = Random(6, 1)
SetGadgetText(Dice()\id, Str(Dice()\Num))
EndIf
DisableGadget(Dice()\id, #False)
SetGadgetState(Dice()\id, #False)
Next
OnPlay()
EndIf
;- Action Place
If Play = #Place ;Place
;Le joueur récupére 3 vies
Players()\Live = 3
SetGadgetText(#Life, Str(Players()\Live))
;Mise à jour du score placé
Players()\PlaceScore + RollScore + SubmitScore
SetGadgetText(#PlaceScore, Str(Players()\PlaceScore))
SetGadgetText(#RollScore, "0")
SetGadgetText(#GameMessage, "")
RollScore = 0
SubmitScore = 0
;Désactivation de tous les dés
ForEach Dice()
DisableGadget(Dice()\id, #True)
Next
DisableGadget(#Roll, #False)
DisableGadget(#Place, #True)
;Si le joueur à placé son roll tout en ayant un score >= 10000 point, son tour est terminée
If Players()\PlaceScore >=10000
Play = #EndStage
Else
ForEach Dice()
Dice()\Sel = 0
SetGadgetState(Dice()\id, #False)
Next
SetGadgetText(#GameMessage, "Cliquez sur Roll")
EndIf
EndIf
;- 10000 points ou +
If Play = #EndStage
If Players()\PlaceScore > Players()\HightScore
Players()\HightScore = Players()\PlaceScore
Players()\PlaceScore = 0
Players()\Live = 0
EndIf
SetGadgetText(#HighScore, Str(Players()\HightScore))
SetGadgetText(#GameMessage, "Bravo, Vous venez d'atteindre les 10 000 points")
DisableGadget(#Roll, #True)
DisableGadget(#Place, #True)
If ListSize(Players()) > 1
;Joueur suivant
;......
Else
;Le joueur est tout seul
DisableGadget(#Reset, #False)
SetGadgetText(#SelMessage, "Cliquez sur reset pour recommencer.")
EndIf
EndIf
;-Perte des vies
If Play = #EndLife
DisableGadget(#Roll, #True)
DisableGadget(#Place, #True)
;DisableGadget(#Reset, #False)
;SetGadgetText(#GameMessage, "Vous avez perdu tous vos points,")
;SetGadgetText(#SelMessage, "Cliquer sur reset pour recommencer.")
If ListSize(Players()) > 1
;Joueur suivant
;......
Else
;Le joueur est tout seul
DisableGadget(#Reset, #False)
SetGadgetText(#SelMessage, "Cliquez sur reset pour recommencer.")
EndIf
EndIf
EndProcedure
Procedure OnReset()
ForEach Dice()
Dice()\Num = 0
Dice()\Sel = 0
SetGadgetText(Dice()\id, "?")
DisableGadget(Dice()\id, #True)
SetGadgetState(Dice()\id, #False)
Next
If players()\Live = 0
Players()\PlaceScore = 0
Players()\Live = 3
SetGadgetText(#PlaceScore, "0")
SetGadgetText(#Life, Str(Players()\Live))
EndIf
SetGadgetText(#GameMessage, "Cliquez sur Roll")
SetGadgetText(#SelMessage, "")
SubmitRoll = ""
SubmitScore = 0
RollScore = 0
SetGadgetText(#RollScore, "0")
DisableGadget(#Roll, #False)
DisableGadget(#Place, #True)
DisableGadget(#Reset, #True)
EndProcedure