Voici un petit jeu ....
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Bon, déjà, mets ça comme code pour les gains :
et ajoutes ça aussi avant de rejouer :
je pense qu'il vaut mieux remettre à zéro quand tu rejoues une partie.
Si je peux te donner un conseil, c'est de poser quelque peu ton programme sur papier : de faire un algorithme.
Si tu essaies de programmer à la volée, tu vas pas t'en sortir.
je veux bien t'aider, mais fais un minimum d'analyse pour ton programme.
Tu as quel age, quel est ton niveau en programmation, ta formation professionnelle c'est quoi ?
cela permettra à tout le monde sur le forum de t'aider si on connait ton niveau !!!
Pour les autres membres, c'est pas la peine de le charrier de suite, attendez sa réponse, la notion de logique programmation n'est pas donnée à tous !!!
Ton problème des gains négatifs venait du fait que tu n'affichais les gains que si ceux-ci étaient gagnants, et que tu soustrait -10 même si les gains sont négatifs.
If Resultat= 7
gains= gains+10
setgadgettext ( #Titre_2 , "GAGNÉ !" )
setgadgettext ( #string_Gains , "" + str (gains))
Else
gains = gains -10
If gains<0
gains=0
EndIf
setgadgettext ( #Titre_2 , "PERDU!" )
setgadgettext ( #string_Gains , "" + str (gains))
EndIf
et ajoutes ça aussi avant de rejouer :
Case #Bouton_rejouer
messagerequester ( "Infos" , "Nouvelle partie" , #PB_MessageRequester_Ok )
gains=0
rejouer()
je pense qu'il vaut mieux remettre à zéro quand tu rejoues une partie.
Si je peux te donner un conseil, c'est de poser quelque peu ton programme sur papier : de faire un algorithme.
Si tu essaies de programmer à la volée, tu vas pas t'en sortir.
je veux bien t'aider, mais fais un minimum d'analyse pour ton programme.
Tu as quel age, quel est ton niveau en programmation, ta formation professionnelle c'est quoi ?
cela permettra à tout le monde sur le forum de t'aider si on connait ton niveau !!!
Pour les autres membres, c'est pas la peine de le charrier de suite, attendez sa réponse, la notion de logique programmation n'est pas donnée à tous !!!
Dernière modification par TazNormand le ven. 15/mai/2009 14:19, modifié 1 fois.
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Je ne veux pas avoir l'air de donner des leçons, je suis moi-même à la ramasse sur bien des sujets, mais j'ai envie de l'aider.Dobro a écrit :t'inquiete on connais dejaTazNormand a écrit : cela permettra à tout le monde sur le forum de t'aider si on connait ton niveau !!!!
(c'etait plus fort que moi)
Peut-être a t'il des difficultés personnelles, je ne veux pas le juger avant de connaître sa réponse.
Yes, d'autant que JB13 a l'air de faire de réels efforts pour se mettre à la programmation, discipline ô combien ingrate quand on débute.Dobro a écrit :mais ... c'est tout a ton honneur !TazNormand a écrit :
Je ne veux pas avoir l'air de donner des leçons, je suis moi-même à la ramasse sur bien des sujets, mais j'ai envie de l'aider.
Peut-être a t'il des difficultés personnelles, je ne veux pas le juger avant de connaître sa réponse.
JB13 : je te félicite


Only PureBasic makes it possible
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
Que du bien. C'est une idée de jeu simple qui présente l'intérêt de te confronter à des questions techniques essentielles et c'est toujours plaisant à jouer de 7 à 77 ans
C'est un premier pallier que tu es en train de franchir
.
L'essentiel est de se jeter à l'eau, le reste ça vient avec le temps et le travail. Le forum PB nous facilite beaucoup les choses. Notre communauté est une grande chance pour nous tous.

C'est un premier pallier que tu es en train de franchir

L'essentiel est de se jeter à l'eau, le reste ça vient avec le temps et le travail. Le forum PB nous facilite beaucoup les choses. Notre communauté est une grande chance pour nous tous.
Only PureBasic makes it possible
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Bien, pour répondre à ta question en Message privé :
"Comment arrêter le jeu quand on atteint 100 ?"
de la même manière que tu testes que tu n'es pas en négatif pour les gains. C'est à dire que quand tu ajoutes +10 aux gains, si gains égal à 100, tu "sautes" à une partie de ton programme qui dit que tu as gagné, et que cette partie est terminée.
Quand je te conseille de "poser" ton programme sur papier, ce n'est pas pour rien. Déjà fixer les règles du jeu :
"Simili Analyse" :
1° Faire tourner 3 rouleaux
2° calcul des gains suivant "valeur" du rouleau
===>2.1° Si un des rouleau vaut 7, ajouter 10 aux gains
===>2.2° Si deux rouleaux valent 7, ajouter 30 aux gains
===>2.3° Si trois rouleaux valent 7, ajouter 50 aux gains
3° Si total des gains est 100, alors partie gagnée, on ne relance plus
ça te donne un squelette pour ton programme
Après ça, tu descend plus en profondeur dans l'analyse. Par exemple, tu peux dire que les 3 rouleaux tournent à la même vitesse, la vitesse diminue de moitié à chaque tour (sur 3 tours maxi par exemple) et que le rouleau 2 s'arrête deux secondes après le 1, et le 3 s'arrête deux secondes après le rouleau 2.
Comme j'ai pu voir sur tes différents messages sur le forum que tu préfères plus les exemples de code que les explications, je vais regarder pour te "mâcher" un peu le travail, mais n'hésites pas à écrire tes propres "routines", c'est comme ça qu'on apprend le mieux.
"Comment arrêter le jeu quand on atteint 100 ?"
de la même manière que tu testes que tu n'es pas en négatif pour les gains. C'est à dire que quand tu ajoutes +10 aux gains, si gains égal à 100, tu "sautes" à une partie de ton programme qui dit que tu as gagné, et que cette partie est terminée.
Quand je te conseille de "poser" ton programme sur papier, ce n'est pas pour rien. Déjà fixer les règles du jeu :
"Simili Analyse" :
1° Faire tourner 3 rouleaux
2° calcul des gains suivant "valeur" du rouleau
===>2.1° Si un des rouleau vaut 7, ajouter 10 aux gains
===>2.2° Si deux rouleaux valent 7, ajouter 30 aux gains
===>2.3° Si trois rouleaux valent 7, ajouter 50 aux gains
3° Si total des gains est 100, alors partie gagnée, on ne relance plus
ça te donne un squelette pour ton programme
Après ça, tu descend plus en profondeur dans l'analyse. Par exemple, tu peux dire que les 3 rouleaux tournent à la même vitesse, la vitesse diminue de moitié à chaque tour (sur 3 tours maxi par exemple) et que le rouleau 2 s'arrête deux secondes après le 1, et le 3 s'arrête deux secondes après le rouleau 2.
Comme j'ai pu voir sur tes différents messages sur le forum que tu préfères plus les exemples de code que les explications, je vais regarder pour te "mâcher" un peu le travail, mais n'hésites pas à écrire tes propres "routines", c'est comme ça qu'on apprend le mieux.
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Arrêt à 100, version simpliste et non optimisée :
;***** Bandit manchot *****
;***** écris par Jbernard *****
;**** Constantes *****
Enumeration
#Fenetre_main
#Cadre_0
#cadre_2
#Cadre_3
#Titre_1
#Titre_2
#Titre_3
#string_Resultat
#string_Gains
#Bouton_jouer
#Bouton_rejouer
#Font1
#Font2
#Font3
#Font4
#Font5
EndEnumeration
;**** Déclarations des variables ****
;*** Pour les polices ***
Global Font01,Font02,font03,Font04,Font05
;*** Pour le calcul du resultat et du gains
Global Resultat,gains,FinPartie
;*** Chargement de la police ****
Font01= loadfont ( #Font1 , "arial" ,20, #PB_Font_Bold )
Font02= loadfont ( #Font2 , "arial" ,50, #PB_Font_Bold )
font03= loadfont ( #Font3 , "arial" ,15, #PB_Font_Bold )
Font05= loadfont ( #Font5 , "Impact" ,50, #PB_Font_Bold )
;**** Les procédures ****
Procedure Calcul_Resultat()
setgadgettext ( #Titre_2 , "" )
Shared gains
Resultat = random (9)
; Faire "tourner" le rouleau des chiffres
; Tout d'abord 3 fois complet
speed=32
For roul=1 To 3
y=0
Repeat
displaytranslucentsprite (1,5,y+81,255)
flipbuffers ()
clearscreen ( rgb (255,255,0))
y=y-speed
Until y=<-902 ;738
speed=speed/2
Next roul
; puis une seule fois où on s'arrête sur le bon numéro
y=0
Repeat
displaytranslucentsprite (1,5,y+81,255)
flipbuffers ()
clearscreen ( rgb (255,255,0))
y=y-speed
Until y<=((Resultat+1)*82)*-1
setgadgettext ( #string_Resultat , "" + str (Resultat))
If Resultat= 7
gains= gains+10
setgadgettext ( #Titre_2 , "GAGNÉ!" )
setgadgettext ( #string_Gains , "" + str (gains))
If gains=10
FinPartie=1
messagerequester ( "Fin de la partie" , "Bravo, vous avez atteint un gain de 100, la partie est terminée, cliquez sur Rejouer" , #PB_MessageRequester_Ok )
EndIf
Else
gains = gains -10
If gains<0
gains=0
EndIf
setgadgettext ( #Titre_2 , "PERDU!" )
setgadgettext ( #string_Gains , "" + str (gains))
EndIf
ProcedureReturn FinPartie
EndProcedure
Procedure rejouer()
setgadgettext ( #Titre_2 , "" )
setgadgettext ( #string_Gains , "0" )
EndProcedure
;***** Création de la fenetre et des gadgets *****
; Initialisations Diverses
If initsprite () =0 Or initkeyboard ()=0 Or initmouse ()=0 Or initsprite3d ()=0
messagerequester ( "Error" , "Sprite system can't be initialized" , 0)
End
EndIf
If openwindow ( #Fenetre_main ,0,0,320,400, " Bandit Manchot " , #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered )
If openwindowedscreen ( windowid ( #Fenetre_main ),130,80,45,80,0,0,0)
clearscreen ( rgb (255,255,0))
EndIf
setwindowcolor ( #Fenetre_main , rgb ($0,$80,$FF))
frame3dgadget ( #Cadre_0 ,10,10,300,50, "" )
textgadget ( #Titre_1 ,35,20,250,30, "Bandit Manchot" , #PB_Text_Center )
setgadgetfont ( #Titre_1 ,Font01)
setgadgetcolor ( #Titre_1 , #PB_Gadget_FrontColor , rgb ($FF,$80,$C0))
setgadgetcolor ( #Titre_1 , #PB_Gadget_BackColor , rgb ($0,$80,$FF))
stringgadget ( #string_Resultat ,240,60,45,80, "" , #PB_String_Numeric|#PB_String_ReadOnly )
setgadgetfont ( #string_Resultat ,Font02)
setgadgetcolor ( #string_Resultat , #PB_Gadget_BackColor , rgb ($FF,$FF,$0))
frame3dgadget ( #cadre_2 ,10,170,300,50, "" )
textgadget ( #Titre_2 ,35,180,250,30, "" , #PB_Text_Center )
setgadgetfont ( #Titre_2 ,Font01)
setgadgetcolor ( #Titre_2 , #PB_Gadget_FrontColor , rgb ($FF,$80,$C0))
setgadgetcolor ( #Titre_2 , #PB_Gadget_BackColor , rgb ($0,$80,$FF))
;***********************************************************
frame3dgadget ( #Cadre_3 ,10,260,300,120, "" )
textgadget ( #Titre_3 ,20,290,120,30, "Gains :" , #PB_Text_Center )
setgadgetfont ( #Titre_3 ,font03)
setgadgetcolor ( #Titre_3 , #PB_Gadget_FrontColor , rgb ($FF,$80,$C0))
setgadgetcolor ( #Titre_3 , #PB_Gadget_BackColor , rgb ($0,$80,$FF))
stringgadget ( #string_Gains ,150,290,80,30, "0" , #PB_String_Numeric|#PB_String_ReadOnly )
setgadgetfont ( #string_Gains ,font03)
setgadgetcolor ( #string_Gains , #PB_Gadget_BackColor , rgb ($FF,$FF,$0))
buttongadget ( #Bouton_jouer ,60,350,60,20, "JOUER" )
PureCOLOR_SetButtonColor( #Bouton_jouer , rgb ($FF,$FF,$0), rgb (0,0,0))
buttongadget ( #Bouton_rejouer ,200,350,60,20, "REJOUER" )
PureCOLOR_SetButtonColor( #Bouton_rejouer , rgb ($FF,$FF,$0), rgb (0,0,0))
; Création du "rouleau" de chiffres
createsprite (1,36,821)
For i=0 To 9
startdrawing ( spriteoutput (1))
drawingmode ( #PB_2DDrawing_Transparent )
drawingfont ( fontid ( #Font5 ))
drawtext (0,(i*82)+1, str (i), rgb (0,1,0), rgb (0,0,0))
stopdrawing ()
Next i
EndIf
;***** Boucle du programe ****
Repeat
Select waitwindowevent ()
Case #PB_Event_Gadget
Select eventgadget ()
Case #Bouton_jouer
If Fin=0
Fin=Calcul_Resultat()
Else
messagerequester ( "Fin de la partie" , "Bravo, vous avez atteint un gain de 100, la partie est terminée, cliquez sur Rejouer" , #PB_MessageRequester_Ok )
EndIf
Case #Bouton_rejouer
FinPartie=0
messagerequester ( "Infos" , "Nouvelle partie" , #PB_MessageRequester_Ok )
gains=0
rejouer()
EndSelect
Case #PB_Event_CloseWindow
Fermer = #True
EndSelect
Until Fermer
End
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Quand tu appelles ta procédure Calcul_Resultat(), le ProcedureReturn renvoie une valeur (FinPartie).
C'est pour ça que gadget "Jouer" n'appelle plus directement ta procédure, mais stocke le résultat de celle ci dans une variable fin.
Si Fin vaut 1 c'est que tu as obtenu 100 en gains, donc on ne peut plus appuyer sur "jouer", on affiche le messagerequester.
Le fait d'appuyer sur "Rejouer" remet la finpartie à 0.
je pense que mon code heurte la sensibilité des meilleurs "PureBasiciens" ici, mais je fais au plus vite pour t'expliquer
C'est pour ça que gadget "Jouer" n'appelle plus directement ta procédure, mais stocke le résultat de celle ci dans une variable fin.
Si Fin vaut 1 c'est que tu as obtenu 100 en gains, donc on ne peut plus appuyer sur "jouer", on affiche le messagerequester.
Le fait d'appuyer sur "Rejouer" remet la finpartie à 0.
je pense que mon code heurte la sensibilité des meilleurs "PureBasiciens" ici, mais je fais au plus vite pour t'expliquer