ceradetareba
Messages postés11Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 8 septembre 2011
-
7 sept. 2011 à 17:41
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024
-
7 sept. 2011 à 18:31
Bonjour à tous, je suis vraiment embêté. J'essaie de réaliser un développement en vb6 pour réaliser un jeu de poker.
J'ai rencontré un problème hier matin, et cela fait 24h que je planche dessus sans trouver de solution (d'ailleurs sans même trouver de problème !!).
Alors voilà, je voudrais que l'application ouvre une msgbox quand tout le monde est couché, excepté un joueur, celui qui gagne le pot. Les joueurs sont répertoriés dans table(0 to 9) as integer. Avant le premier tour de mise, toutes les valeurs affectées aux joueurs sont "1". table(0)=1, table(1)=1, etc ...
A la petite blind est affecté 15 par défaut et 30 pour la grosse blind. (ex : table(4)=15, table(5)=30)
Si un joueur se couche, sa valeur dans table() sera 0 sinon la valeur de la mise.
Théoriquement, lorsque tout le monde se couche, si la petite blind (avant dernière position) se couche, alors l'addition de toutes les variables grosse blind et donc le message devrait apparaitre !! Mais le message n'apparait que lorsque que TOUS les joueurs sont couchés. La formule suivante ne fonctionne donc qu'avec 0+0+0+0+0+0+0+0+0+0 0 et pas avec 0+0+0+0+30+0+0+0+0+0=30 ?????????????????
Sub toursuivant()
For a = 0 To 9
If table(0) + table(1) + table(2) + table(3) + table(4) + table(5) + table(6) + table(7) + table(8) + table(9) = table(a) Then
MsgBox "Le joueur " & a & " gagne le pot."
Call finjeu
End If
Next a
Ensuite je ne comprends pas non plus pourquoi la formule suivante ne fonctionne pas non plus. Je voudrais qu'une fois que tous les joueurs se sont prononcé, soit qu'ils aient suivi soit, si'ils se soient couché, une msgbox annonce le tirage du flop. Donc soit les joueurs sont couchés (leur valeur dans table()=0), soit ils relancent(et le tour continue) soit ils ont suivi et tous les joueurs ont la meme valeur dans table (qui est la mise max).
misemax = 0
For i = 0 To 9
If table(i) > misemax Then misemax = table(i)
Next i
If (table(0) 0 Or table(0) misemax) And (table(1) = 0 Or table(1) = misemax) And (table(2) = 0 Or table(2) = misemax) And (table(3) = 0 Or table(3) = misemax) And (table(4) = 0 Or table(4) = misemax) And (table(5) = 0 Or table(5) = misemax) And (table(6) = 0 Or table(6) = misemax) And (table(7) = 0 Or table(7) = misemax) And (table(8) = 0 Or table(8) = misemax) And (table(9) = 0 Or table(9) = misemax) Then
MsgBox "ok pour flop"
Call serflop
End If
If tour = 9 Then
tour = 0
Else
tour = tour + 1
End If
End Sub
J'espère avoir été assez clair, merci de me donner un coup de main les gars svp, je deviens fouuuuuuuuuuu...
mercredi 7 septembre 2011 à 14:25:35 | Re : problème d'addition de variable
jack
11885 msg
11942 msg CS
Salut
Première chose : Assure toi du contenu de tes variables "tables()" lors de chaque test, tu découvras ainsi ce qui ne va pas.
Tes variables sont-elles toutes bien et correctement dimensionnées ?
Débogage :
- F9 sur une ligne de code; elle change de couleur
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
Code Visual Basic :
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
mercredi 7 septembre 2011 à 15:09:02 | Re : problème d'addition de variable
ceradetareba
merci jack de te pencher sur mon problème. J'ai déjà vérifié chaque variable en cours d'execution de programme. Par exemple il me dit que table(0)=0, table(1)=0, table(2)=30, table(3)=0, table(4)=0, table(5)=0, table(6)=0, table(7)=0, table(8)=0, table(9)=0. la somme de tous les index = 30.
il me dit également que table(i)=30 (quand i=2)
mais dans la meme fenetre d execution, quand je tape table(0) + table(1)+table(2)+table(3)+[...]+table(9) = table(i)
(quand i=2) il me répond "FAUX"...
ce qui n'est pas logique puisqu'indépendamment il me dit que la somme 30, l'indice 30, mais que la somme n'est pas égale à l'indice... ?!?
Quant à mes variables, elles sont toutes déclarées dans un module, par Public mavariable as integer ou variant.
Quelque chose m'échappe, mais quoi ? Si quelqu'un peut encore m'aider, je m'arrache les cheveux...
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site