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 "
Greedy
Re: Greedy
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Greedy
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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Greedy
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.
je suis d'accord avec toi .
Re: Greedy
Ca, c'est l'esprit gaulois !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Greedy
Faut faire 10 000 avec un jet ?
Pour le moment j'ai fait
2500 - 2600 - 2500
avec ces combis
Par contre faut que tu filtres la valeur entrée car là on peut mettre 1-9AZ
Pour le moment j'ai fait
2500 - 2600 - 2500
avec ces combis
Code : Tout sélectionner
Debug Scoring(SortString("331116"))
Debug Scoring(SortString("662261"))
Debug Scoring(SortString("226666"))
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Greedy
Houla je n'ai pas du être assez clair je pense.
Le code scoring.pb que je montre n'est qu'un process appelé par le programme principal du jeu que je n'ai pas publier pour le moment car il merdouille quelque peu.
■ Quand un joueur entre dans la partie, son score est initialisé à zero point. (of course)
- Pour entrer dans la partie, il va devoir jouer les dés plusieurs fois de suite sans interruption jusqu'à obtenir ces fameux 1000 points ou plus.
- Chaque combinaison de dés représentant des points évalués par scoring.pb, et écartée du prochain lancé.
- Si le lancé suivant donne des points, alors le joueur pourra relancer les dés.
- Si le lancé suivant ne donne pas de points, alors il perd son tour et son score revient à zéro.
■ Quand un joueur est enfin entrée dans la partie, son score est au moins à 1000 points. (of course)
- Quand c'est à lui de jouer, il va Roller : C'est à dire lancer les dés
- Il sélectionne une combinaison de dés donnant un résultat évalué par scoring.pb
- Si ce résultat lui convient il pourra placer ce résultat dans son score et son tour passe.
- Si il ne Place pas son résultat dans son score, il a la possibilité de Roller encore une fois avec les dés non sélectionnés pour augmenter son résultat MAIS avec le risque de ne pas obtenir de point supplémentaire. Et là c'est le drame car dans ce cas, son résultat revient à 0 et il ne peut plus le Placer dans son score.
■ L'objectif de ce jeu est d'atteindre les 10 000 points ou plus pour terminée la partie.
Celui qui dépasse le plus ces 10 000 points sera le gagnant.
La petite astuce et d'essayer de na pas trop dépasser par exemple les 9900 points, puis quand c'est de nouveau à vous de jouer, de roller autant de fois qu'il le faut en espérant pouvoir dépasser largement ces 10 000 points.
Le code scoring.pb que je montre n'est qu'un process appelé par le programme principal du jeu que je n'ai pas publier pour le moment car il merdouille quelque peu.
Non et se serait impossible.Ar-S a écrit :Faut faire 10 000 avec un jet ?
■ Quand un joueur entre dans la partie, son score est initialisé à zero point. (of course)
- Pour entrer dans la partie, il va devoir jouer les dés plusieurs fois de suite sans interruption jusqu'à obtenir ces fameux 1000 points ou plus.
- Chaque combinaison de dés représentant des points évalués par scoring.pb, et écartée du prochain lancé.
- Si le lancé suivant donne des points, alors le joueur pourra relancer les dés.
- Si le lancé suivant ne donne pas de points, alors il perd son tour et son score revient à zéro.
■ Quand un joueur est enfin entrée dans la partie, son score est au moins à 1000 points. (of course)
- Quand c'est à lui de jouer, il va Roller : C'est à dire lancer les dés
- Il sélectionne une combinaison de dés donnant un résultat évalué par scoring.pb
- Si ce résultat lui convient il pourra placer ce résultat dans son score et son tour passe.
- Si il ne Place pas son résultat dans son score, il a la possibilité de Roller encore une fois avec les dés non sélectionnés pour augmenter son résultat MAIS avec le risque de ne pas obtenir de point supplémentaire. Et là c'est le drame car dans ce cas, son résultat revient à 0 et il ne peut plus le Placer dans son score.
■ L'objectif de ce jeu est d'atteindre les 10 000 points ou plus pour terminée la partie.
Celui qui dépasse le plus ces 10 000 points sera le gagnant.
La petite astuce et d'essayer de na pas trop dépasser par exemple les 9900 points, puis quand c'est de nouveau à vous de jouer, de roller autant de fois qu'il le faut en espérant pouvoir dépasser largement ces 10 000 points.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Greedy
Ah ok il me manquait l'élément "jeu pas terminé"
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Greedy
Toujours pas terminé mais un débutAr-S a écrit :Ah ok il me manquait l'élément "jeu pas terminé"
Le code que je vous présente est brut de décoffrage sans aucun design pour le moment dont le seul but est de tester le gameplay.
Je souhaite uniquement savoir si il y a des bugs et pour ça je compte sur vous
Le code seul ci-dessous ne fonctionne pas car il est lié au scoring que j'ai publié précédemment.
Mais vous pouvez télécharger les deux codes ainsi que les combinaisons possibles du gameplay sur ce lien
Greedy
La règle du jeu se trouve au premier message de ce topic mais vous serez guidé tout au long de ce jeu.
Dernière précision, dans cette version le jeu est mono-joueur afin de ne tester que le gameplay.
C'est une version béta qui porte le numéro 0.07
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
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Greedy
Whao... It's great! Amazing...
(bon on va essayer de se concentrer 2 minutes...)
(bon on va essayer de se concentrer 2 minutes...)
Re: Greedy
@Falsam
le "game play" de ton jeu, c'est 15 lignes.
est-ce vraiment des valeurs que tu cherches? Où bien est-ce une méthode de transformation de ton énoncé en algo?
Si tu as un doute, "synchronise" par une variable "Mode.I" et exécute via un Select Mode. Ça diminue (beaucoup) le besoin de faire tester. Et puis le programme ressemble alors grandement au grafcet que tu as dessiné au préalable.
le "game play" de ton jeu, c'est 15 lignes.
est-ce vraiment des valeurs que tu cherches? Où bien est-ce une méthode de transformation de ton énoncé en algo?
Si tu as un doute, "synchronise" par une variable "Mode.I" et exécute via un Select Mode. Ça diminue (beaucoup) le besoin de faire tester. Et puis le programme ressemble alors grandement au grafcet que tu as dessiné au préalable.