Vérification Poker!

Résolu
fragmatyc Messages postés 57 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 17 octobre 2009 - 4 mars 2005 à 20:56
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 - 5 mars 2005 à 11:41
Bonjour a vous tous,
Ces temps-ci, je m'amuse a coder un programme de Poker (pour l'instant à un jouer, mais bientot en réseau).
Tout va bien, mais lorsque le 3e tour des terminé, il faut faire les vérifications........... C'est la que ça se corce lol! Voici donc ce que j'ai:

5 ImageBox ---> Image2(0 à 4)
Contient les images des cartes
5 Label ---------> Label1(0 à 4)
Contient la valeur des cartes (ex.: As de Trèfle)

Puis, après le troisième tours, je veux faire les vérifications. Je stock d'abbord les valeur des cartes:


<HR>

For a = 0 To 4
'On récupère les Couleur des cartes
Select Case Right(Label1(a).Caption, 3)
Case "eur"
TypeCarte(a) = "Coeur"
Case "eau"
TypeCarte(a) = "Carreau"
Case "fle"
TypeCarte(a) = "Trèfle"
Case "que"
TypeCarte(a) = "Pique"
End Select

'On récupère la valeur des cartes
Select Case Left(Label1(a).Caption, 2)
Case "As"
NomCarte(a) = 1
Case "Va"
NomCarte(a) = 11
Case "Ro"
NomCarte(a) = 13
Case "Da"
NomCarte(a) = 12
Case Else
NomCarte(a) = Left(Label1(a).Caption, 1)
End Select
Next a


<HR>

Comme vous l'avez surement remarqué, NomCarte(0 à 4) contient la valeur (entre 1[as] et 13[Roi]) des cartes sur la table, tadis que TypeCarte(0 à 4) contient soit coeur, carreau, trèfle ou pique. Là viens la m*rde! Je ne veux pas que vous me donniez tout crue dans le bec, mais que vous m'aidiez un peu svp!



...--=<(\_+=+<FRAGY'S>+=+_/)>=--...

4 réponses

cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
5 mars 2005 à 00:46
Tu n'as pas de probleme avec les 10 ("10"= 2 chiffres)



Tu peux preciser ta question...



Si je devine bien, tu veux calculer la valeur de la main en detactant
les cartes qui se suivent dans la meme couleur et les cartes de meme
valeur etc...



Je ne connait pas tres bien le poker, tu pourrait rappeler les combinaisons et leur hierachie.



D'abort, j'utiliserai des nombres pour les couleurs (coeur 1, carreau 2,...)

ensuite, si je me rapelle bien, l'as est apres le roi, pas avant le 2, dans ce cas je lui donnerait la valeur 14.



pour detecter les series, je crerait un tableau par couleur qui stoke la valeur de la carte en fonction de sa couleur:

et pour les paires. un tableau par type de carte qui lui incremente a chaque carte trouvee..

dim TypeParCouleurs(4,4) as integer, nbParType(13) as integer, NbMax1
as integer,NbMax2 as integer, TypeMax1 as integer,TypeMax2 as
integer



juste avant le next a, tu remplis les tableaux:

nbParType(nomcarte(a))=nbParType(nomcarte(a))+1 ' a la fin tu as tres facilement les cartes de meme valeur

TypeParCouleur(typecarte(a),a)=nomcarte(a)) ' la, la recherche de suites est plus compliquee



apres le next a



' pour les cartes de meme valeur
for a = 1 to 13

select case nbParType(a)

case 4

typeMax1 = a

nbmax1 = nbParType(a)

exit for ' pas d'autre cas interessant possible, on a 4 cartes de meme valeur

case 3

typeMax1 = a


nbmax1 = 3

if typemax2 = 2 then exit for ' 3 + 2 cartes de meme valeur

case 2

if typemax2 = 0 then

typemax2 = a

nbmax2 = 2

else


typemax1 = a


nbmax1 = 2

exit for ' 2 paires

end if

end select

next a


pour les suites, il faut trier le tableau typeparcouleur et analyser...



est-ce que cela t'avance?
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
5 mars 2005 à 04:15
j'avais fait un programme de statistique pour vérifier le tirage de nombres aléatoires. ça s'appelle le test du poker. tu peux essayer de l'adapter si t'arrives à le comprendre.

Private Sub Command4_Click()
Rem rien=50400 paire=43200 brelan=3600 carré=100 2paires=2700
Dim X As Long
Dim T1(9) As Long
Dim T2(9) As Long
Dim Z As Long
Dim b As Boolean
For j = 1 To 100000
b = False
For i = 1 To 4:
X = Int(Rnd * 10):
T1(X) = T1(X) + 1:
Next
Z = T2(2)
For i = 0 To 9: X T1(i): T1(i) 0 If X > 1 Then T2(X) T2(X) + 1: b True
Next If T2(2) - Z 2 Then T2(2) Z: T2(5) = T2(5) + 1 If b False Then T2(1) T2(1) + 1
Next
For i = 1 To 5:
MsgBox T2(i)
Next
End Sub

Daniel
0
fragmatyc Messages postés 57 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 17 octobre 2009
5 mars 2005 à 05:40
Réponse à cqui789:

Les jeux de poker:
(Plus faible au plus fort)
1. Rien
2. 1 Pair
3. 2 pairs
4. Brelan (3 pareil)
5. Straight (Suite)
6. Flush (Même sorte)
7. Full House (Brelan + pair)
8. 4 Pareil
9. Straight Flush (Suite de la même sorte)
10. Royal Flush (10, Vallet, Damme, Roi, As de la même sorte)ç

Et d'après moi ta reponse est bonne, mais peut tu vérifier si tout fonctionne?

Merci de votre participation

...--=<(\_+=+<FRAGY'S>+=+_/)>=--...
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
5 mars 2005 à 11:41
Petite precision, j'ai l'habitude d'appeler "Coeur","Carreau","Trèfle","Pique"

la couleur de la carte et je crois, c'est le nom "officiel". Tu appel
ca des fois type et des fois sorte et meme une fois couleur.

J'ai appele dans mon code "type" ce que tu appelle "nom", ce qui n'etait pas malin non plus... nom marche bien.



Pour tout te dire, je n'ai traite que les paires, brelans, full House et 4 pareils.



pour les cas 5, 6 et 9, peux-tu preciser un peu ?
5. Straight (Suite)
combien de cartes? meme couleur ou non?

6. Flush (Même sorte)
combien de cartes?

9. Straight Flush (Suite de la même sorte)
combien de cartes?



autre remarque, les select case sont bien quand tu veux faires des
actions differentes mais quand je veut affecter la valeur d'une
variable, je prefere d'autres methodes, je trouve ca plus simple mais
ce n'est qu'une question de gout...





La recuperation des couleurs des cartes peut-etre remplace par



typecarte(a) = choose((instr("eureaufleque", right(label1(a).Caption, 3)) +2 ) / 3, "Coeur", "Carreau", "Trefle", "Pique")



ou, si tu applique mes autres suggestion,



couleurcarte(a) = (instr("eureaufleque", right(label1(a).Caption, 3)) +2 ) / 3





si les noms de cartes sont suivis d'un espace dans label1, le suivant fait la meme chose pour les noms de cartes



nomCarte(a)= instr("as1 2 3 4 5 6 7 8 9 10vadaro", left(label1(a).caption,2) / 2
0
Rejoignez-nous