Discuss Scratch

Itharius
Scratcher
1000+ posts

Poker Witch

Je vous présente mon dernier projet, un poker avec une IA !

Deux semaines pour aboutir à ce résultat, je compte certainement améliorer encore l'IA au fur et à mesure des commentaires des futurs testeurs mais je crois que le jeu est déjà suffisamment avancé pour être présenté.

Je crois que c'est le premier poker contre une IA sur scratch ( en tout cas, je n'en ai encore jamais rencontré)

j'espère avoir chassé une grosse partie des bugs mais je compte sur vos retours pour déceler ce que je n'ai pas vu

***censuré***

l'IA d'un poker pour moi; c'est un programme qui sait bluffer. Ce point est à mon avis déjà bien avancé. Il me reste à développer le calcul du pourcentage de victoires possible en fonction de la main et surtout de l'évaluation du risque par rapport à l'enchère du joueur et du nombre de cartes qu'il change.

au fur et à mesure que vous déshabiller le computer, les blinds augmentent ou diminuent. Les tapis sont également pris en compte (vous ne pouvez pas enchérir plus que votre tapis ou celui de l'ordi). Pour le moment, l'ordi parfois enchérit plus que vous tapis, ce n'est pas bien grave car dans ce cas, vous pouvez tout simplement call ou fold.

n'hésitez pas à liker ou favoriser

https://scratch.mit.edu/projects/254445238/

Last edited by Itharius (Oct. 25, 2018 09:50:29)

ma15fo43
Scratcher
1000+ posts

Poker Witch

J'aime bien le jeu, mais, ce topic, ça rentre pas dans le domaine de la pub ? ^^

Last edited by ma15fo43 (Sept. 3, 2017 17:51:54)


No longer active on Scratch, I build stuff with TypeScript and Kotlin nowadays. (#3 all-time poster in French forums)
Itharius
Scratcher
1000+ posts

Poker Witch

ben si, j'informe que j'ai sorti un jeu de poker pourquoi ? (sinon j'ai pas constaté une augmentation du nombre de vue suite à ton passage tu es sûr que tu as testé mon jeu ?)

Last edited by Itharius (Sept. 3, 2017 18:02:43)

ma15fo43_
Scratcher
72 posts

Poker Witch

Itharius wrote:

ben si, j'informe que j'ai sorti un jeu de poker pourquoi ? (sinon j'ai pas constaté une augmentation du nombre de vue suite à ton passage tu es sûr que tu as testé mon jeu ?)
Non non, pour rien, mais si tous les scratchers francophones disaient qu'ils avaient sorti un nouveau projet… Et sinon je suis l'un des premiers (le 2e je crois…) à avoir vu ton jeu
Itharius
Scratcher
1000+ posts

Poker Witch

en même temps, je poste pas pour dire que j'ai fait un pong (même si selon moi on peut aussi poster pour dire qu'on a fait un pong). Mais si tu as d'autres idées pour faire la pub de mon poker je suis aussi preneur. j'ai bien cherché, et pour le moment sur scratch, je n'ai encore jamais vu d'IA de poker donc à mon avis, c'est un projet qui mérite quand même un peu d'attention et le moyen d'un nouveau fil de discussion pour l'occasion est justifié.

d'autant que si des scratcheurs ont des idées sur l'évaluation des mains en fonction des relances des joueurs, les commentaires du projets sont trop limités en nombre de caractères pour pouvoir en discuter sérieusement.

Last edited by Itharius (Sept. 4, 2017 12:19:55)

SBissay
Scratcher
500+ posts

Poker Witch

Yay, on nouveau projet d'Itharius !

Je suis intéressé par l'approche de l'IA, qui est très complexe au niveau du poker. Et si tu as besoin d'aide pour les probabilités, ça pourrait me faire un bon rappel (c'est ultra violent comme probas).

Generative art :              Pivot  :               Sudoku :
Itharius
Scratcher
1000+ posts

Poker Witch

En ce qui concerne le bluff:

Si l'IA n'a rien. Si il lui manque une seule carte pour faire une couleur, ou une suite, l'ia va changer cette carte comme ça, on ne sait pas si elle a 1,2 paires ou un carré.
si l'IA a 1 paire, elle va changer 2 ou 3 cartes selon le hasard ( des fois 2, des fois 3) comme ça ça peut laisser penser parfois à un brelan
Si l'ia a 2 paires, elle va changer 1 cartes
si l'IA a un brelan, elle va changer 1 ou 2 cartes ( pour faire croire à 2 paires)

Pour ce qui concerne les relances
Si après le changement de cartes, l'iA n'a rien et que le player bet, l'IA va fold.

Et voilà grosso modo pour le moment ou j'en suis.

Je voudrais coder des relances selon la main que l'IA possède et ce que le joueur joue puis de combien de cartes il change. ce n'est que pour le moment mon idée, ça n'est pas en place, d'autant plus que la façon dont j'ai posé le choix pour le moment de l'ordi de relancer , bet ou fold n'est pas si mauvaise vu que ça tient la route. codifier mon idée peut-être bon ou carrément mauvais car le player pourrait trouver le moyen de faire plier l'ordi en lui faisant peur à chaque coup ( ce qui tue l'idée d'une “bonne” IA)

Je n'ai pas encore résolu mon pb d'ordi d'avant les vacances et c'est avec celui de ma belle fille que j'utilise va falloir que je réinvestisse un nouveau pc.

Last edited by Itharius (Sept. 4, 2017 13:03:42)

Itharius
Scratcher
1000+ posts

Poker Witch

Pour lolipopcorn (et éventuellement ceux qui ne savent pas jouer au poker), je vais tenter une rapide explication du jeu.

Le dealer est celui qui a devant lui le petit jeton dealer ( j'ai mis ma tête pour personnaliser le jeton)

c'est lui qui distribue les cartes en commençant par l'autre puis lui une à une jusqu'à avoir 5 cartes chacun. ici , c'est l'ordi qui se charge de dstribuer les cartes ^^

Puis le Dealer “parle”, c'est à dire qu'il annonce ce qu'il mise ou non.

-Soit le delaer bet ( miser/parier), dans ce cas, c'est au tour de l'autre joueur qui a le choix entre miser autant=call OU abandonner=Fold OU miser et rajouter de l'argent à cette mise=Raise. Si l'autre joueur (celui qui n'est pas le dealer) call, on passe à la phase d'échange de cartes. Si l'autre joueur Fold, le Dealer remporte donc le pot et on redistribue les cartes, l'autre joueur devient le dealer et inversement. Si le Joueur Raise, le Dealer se retrouve dans la meme situation que l'autre joueur avec à son tour la possibilité de call, Raise ou Fold.

-Soit le delaer check, c'est à dire qu'il ne mise rien mais n'abandonne pas directement. L'autre joueur à alors la possibilité de check, de bet ou de fold. Si l'autre joueur check, on passe à la phase d'échange des cartes. Si l'autre joueur bet, le dealer doit alors call ou raise ou fold. Si l'autre joueur fold (ce qui est bête dans ce cas) alors le dealer remporte le pot et on redistribue les cartes.

-Soit le dealer Fold ( ce qui est bête dans ce cas) et dans ce cas l'autre joueur remporte le pot et on redistribue les cartes.

une fois qu“un des deux a ”call" ou que les deux ont check, vient donc la phase d'échange des cartes. en commençant par l'autre joueur, qui reçoit ses cartes qu'il a changé. Ensuite seulement , le delaer annonce combien de cartes il échange et les échangent.une fois ces opération faite , c'est à l'autre joueur de parler.

l'autre joueur peut check, bet ou fold( ce qui est bête dans ce cas) et selon ce que l'autre joueur annonce le dealer répond de la même façon que j'ai expliqué en phase 1

Une fois que l'un des deux joueurs à call ou si les deux joueurs ont check. on passe au moment final ou les deux joueurs montrent leurs cartes.

celui qui a la main a plus forte remporte le pot.

classement des mains par ordre décroissant:
Quinte flush royale ( 1, roi, dame, valet, 10 le tout de la meme famille c'est à dire coeur ou carreau ou pique ou trefle)
Quinte flush ( une suite de la même couleur , par exemple 7coeur, 8 coeur, 9 coeur, 10 coeur, valet coeur)
carré ( 4 cartes de la meme valeur)
full ( brelan + 1 paire)
couleur ( toutes les cartes de la meme famille)
Suite ( par exemple 7,8,9,10,valet)
brelan ( 3 cartes de la meme valeur)
2 paires
1 paires
rien

Si les deux joueurs ont des mains de meme force on regarde la hauteur de cette main.
exemple pour un carré, un carré d'as bat un carré de roi.
2 paires contre deux paires, qui a la paire la plus haute ?
rien contre rien qui a la carte la plus forte ?

ET si malgré tout celà on se retrouve encore dans un cas d'égalité ?
celà arrive vraiment peu souvent mais il y a certain cas possible, pour un carré,un full, un brelan c'est impossible
pour une couleur ou rien, on regarde la deuxieme carte la plus forte et si c'est encore égalité la troisieme etc
Pour 2 paires on regarde la deuxieme paire et si c'est encore égalité la dernière carte qui n'est pas dans la paire.

Et malgré tout celà Si on est toujours dans un cas d'égalité ???
c'est vraiment super rare mais c'est possible, dans le cas d'un quinte flush royale contre une autre quinte flush royale, ou plus généralement une suite contre un suite. Bref dans ces cas très rare, le pot est partagé en 2 ce qui revient dans le cas ou l'on ‘nest que 2 à jouer comme dans mon projet à récupérer tout les mises qu’on a fait et recommencer un nouveau coup.

une fois le vainqueur déterminé, le dealer change et on recommence une nouvelle phase

En espérant avoir été suffisamment explicite ^^

Last edited by Itharius (Sept. 4, 2017 18:27:18)

Itharius
Scratcher
1000+ posts

Poker Witch

je commençais à essayer de dénombrer les nombre de mains possibles.

Je me disais qu'il fallait déjà calculer le nombre total de mains, que j'estime à 52x51x50x49x48=311 875 200

Puis j'ai essayé de dénombrer le nombre de Quinte flush royale possible, j'avais pensé à 4 dans un premier temps puis je me suis dit que la main 1,k,q,v,10 n'était pas la même que k,10,v,q,1 par exemple. Je pensais donc qu'il fallait calculer 5x4x3x2x1 le tout multiplié par 4 ( nombre de familles possibles)

et puis j'ai tapé calcul des mains probabilté sur google et je suis tombé sur https://fr.wikipedia.org/wiki/Probabilit%C3%A9_au_poker#Poker_ferm.C3.A9_:_mains_de_base

et là semble-t-il qu'il ne faut pas calculer 5x4x3x2x1x4 mais tout simplement 4

par ailleurs, l'artcile dit que le total des combinaisons est 2 598 960.

Je ne comprend pas la formule qui permet d'avoir ce chiffre.
je voudrais réussir à la comprendre afin de pouvoir me fier à ce tableau car si les chiffres sont exacts (ce qui serait certainement un outil utile car selon l'article et comme je le pensais “Ce sont ces mains qu'il faut étudier pour discuter des risques d'ouvertures et des niveaux de relance.”) ce serait surement un gain de temps

j'ai bien cliqué sur le lien https://fr.wikipedia.org/wiki/Combinaison_(math%C3%A9matiques) mais je n'arrive pas à comprendre le calcul qui mène de (4N/ 5 ) à 2 598 960.

Last edited by Itharius (Sept. 5, 2017 22:48:48)

SBissay
Scratcher
500+ posts

Poker Witch

Alors attention, il ne faut pas lire (4N / 5) mais les combinaisons de 5 parmi 4N. Autrement dit, combien de combinaisons différentes de 5 cartes existe-t-il dans un total de 4N (ici 52) cartes.

Là où ce calcul diffère de ton approche 52 * 51 * 50 * 49 * 48, c'est que ton approche considère que, comme tu le disais, la main 2♥, 5♣, 7♦, 9♣, 6♦ est différente de 6♦, 2♥, 5♣, 7♦, 9♣. Or, tu conviendras que l'ordre dans lequel tu reçois tes cartes n'a aucune incidence sur les combinaisons que tu vas pouvoir faire avec.

Donc il faut employer l'approche combinatoire. Je ne vais pas essayer de démontrer la formule de calcul du nombre de combinaisons (c'est un peu ardu à faire), on va donc partir en l'admettant.
Ainsi, (n k) = n! / (k! (n - k)! ).

Dans notre cas précis, le nombre de mains est donc le nombre de combinaisons de 5 cartes parmi 52, donc (52 5).

En appliquant la formule, (52 5) = 52! / (5! * (52 - 5)!) = 52! / (5! * 47!).

Or, par définition de la fonction factorielle, 52! = 52 * 51 * 50 * 49 * 48 * (47!).
On peut donc simplifier par 47! au numérateur et au dénominateur. Il reste (52 * 51 * 50 * 49 * 48) / 120 (car 5! = 120).
Ce qui nous donne ton résultat, 311 875 200, mais divisé par les 120 façons différentes d'obtenir les 5 cartes, puisqu'au final la main sera la même.

Et là, magie, 311 875 200 / 120 = 2 598 960. Le compte est bon.

Maintenant, on peut essayer de “démontrer” cette formule de combinaison à l'aide de l'exemple : tu avais bien le bon nombre d'arrangements, c'est à dire de façons de tirer 5 cartes, mais en tenant compte de l'ordre. Il faut donc se débarrasser de cette notion d'ordre en regroupant tous les tirages équivalents.
Et donc, le nombre d'arrangements (tirages en tenant compte de l'ordre) est bien 52 * 51 * 49 * 48 * 47 ce qui s'écrit aussi 52! / 47!.
Quant au nombre de mains équivalentes, c'est le nombre de façons de tirer les 5 mêmes cartes dans des ordres différents, à savoir :
5 possibilité pour la première carte, 4 pour la deuxième, 3 pour la troisième, 2 pour la quatrième et une seule pour la dernière, soit 5!.

Au final, on obtient bien (52 5) = 52! / (5! * 47!) = 52! / (5! (52 - 5)!).

C'est plus une preuve que la formule fonctionne dans ce cas précis qu'une démonstration, mais j'espère que ça t'éclairera

Last edited by SBissay (Sept. 6, 2017 09:07:41)


Generative art :              Pivot  :               Sudoku :
Itharius
Scratcher
1000+ posts

Poker Witch

j'avais compris qu'il fallait lire combinaison de 5 parmi 52. j'avais lu aussi la formule du factorielle et c'est vrai que ça m'importe peu quelle soit démontrée. Je n'arrivais pas à l'appliquer à mon exemple parce que (n k) je savais pas ce que ça voulais dire. MERCI pour cette explication ! je ne sais pas exactement ce que je vais faire avec les résultats mais ce sont ces resultats que je cherchais à obtenir dans un premier temps et le fait de les trouver cash et que le premier resultat soit effectivement bon me donne assez confiance sur la fiabilité des résultats du tableau “probabilité de chaque main” et “probabilité d'avoir au moins”

Est-ce que tu joues au poker ? Connais-tu une page web qui théorise à partie de quelle main on relance ou on balance un tapis ?

Je n'ai qu'une intuition mais j'ai l'impression que ce qu'il manque uniquement à mon projet ( qui est déjà assez aboutit je trouve), c'est de coder la condition d'abandon de l'ordi en phase 1 selon le % du total de son tapis selon la main que l'ordi possède.

exemple: Si l'ordi n'a rien qu'une carte haute AS, il est capable de suivre jusqu'au tapis.
S'il n'a rien et même pas une carte haute As, si on l'oblige à balancer un tapis de départ, il fold.
Si l'ordi a une paire de quelque chose, il fold si il y a x % de son tapis de misé sauf s'il s'agit d'une paire d'AS ou ?.
Si l'ordi a un brelan ou + , il ne fold pas etc etc.

As-tu un avis ou une expertise sur la question ? (Sbissay comme d'autres éventuels experts ou pas de poker ? )
SBissay
Scratcher
500+ posts

Poker Witch

Alors je connais les règles du poker, et j'y ai déjà joué (mais comme un manche).

Pour ton idée, il me semble en effet crucial de tenir compte de la réserve monétaire de l'AI. Toutefois, deux choses : plutôt que de penser en terme de “tapis” ou “pas tapis”, je verrais plutôt un état en fonction du nombre de blindes que l'AI pourra payer après la perte éventuelle de la mise (du genre : 0-3 : serré ; 3 - 5 : moyen ; 5+ : large (attention ces chiffres sont donnés de manière aléatoire et nécessitent d'être repensés)), ce qui donnera un peu plus de finesse (surtout si tu affines en augmentant le nombre d'états). D'autre part, il me semble que fixer des règles dans le marbre va donner un peu trop de prédictibilité au bot : je verrais plus des probabilités, qui évoluent selon l'état de la banque, de faire ou telle action : par exemple, si le bot est riche et a une bonne main, il peut avoir 70% de chances de relancer, 30% de chances de call et 0% de fold, alors que pauvre ces probabilités pourraient passer à 10% de relance (bluff ^^), 20% de call et 70% de fold. Là encore, les équilibres sont à tester si jamais tu décides d'essayer ça.

Enfin, j'essaierais aussi probablement de déterminer les chances de victoire de la main du bot, pour l'aider dans sa prise de décision. le calcul formel de ces chances est très complexe et normalement trop gourmand en ressources, mais une approche viable est un approche sur le principe dit “Monte-Carlo” : plutôt que de chercher à connaître les chances exactes, on peut s'en approcher suffisamment en simulant un nombre suffisant de mains adverses et en regardant les chances de victoire du bot.

Sinon, une petite remarque concernant l'état actuel de ton jeu : c'est déjà jouable et je n'ai jamais réussi à lui faire retirer plus que sa robe (j'ai dit que je jouais comme un manche), mais c'est assez désagréable qu'elle rachète son dernier vêtement dès qu'elle a à peine plus que son prix : du coup on pourrait avoir une main d'enfer le tour suivant son rachat mais son argent se limite à 2 pièces quand elle en avait 22 juste avant. Peut-être faudrait-il définir une marge, genre avoir au moins 3-5 blindes de plus que le prix du vêtement pour pouvoir le racheter ?
Et petit bug : on ne peut pas faire miser au bot plus que son argent, mais lui peut : je me suis déjà retrouvé à avoir une banque négative… Ce qui m'a bien arrangé quand je gagnais la main

Voilà, j'espère que dans ces quelques idées en vrac il y aura peut-être quelques idées qui t'intéresseront, et bon courage pour la suite, hâte de voir ça, comme d'habitude !

P.S. : le problème pour des sites sur les probabilités du poker, c'est que la grande majorité sont sur le texas hold'em

Last edited by SBissay (Sept. 6, 2017 19:41:43)


Generative art :              Pivot  :               Sudoku :
Itharius
Scratcher
1000+ posts

Poker Witch

très bonne idée que d'avoir des % de décisions entre call, raise et fold qui varient selon tel ou tel évenement (main, tapis ) !!! ça casse la possibilité de trouver le point de rupture qui effraye le bot aussi facilement.
Je ne compte pas chercher à simuler le nombre de chance exacte des mains du bot et le tableau sur wikipedia “probabilité d'avoir au moins” pourrait etre mis en relation avec les % de décisions de call, raise et fold évoqués précédemment.
Bon moi j'ai bien sûr déjà réussi à déshabiller plusieurs fois la sorciere mais lorsqu'on est le coder, on sait forcément plus de chose sur le comportement de l'AI qu'un testeur.
Pour les jeux de strip auxquels j'ai déjà joué, ça se passe toujours comme ça, dès que le computer redépasse la limite il se rhabille. le blocage à zéro du tapis en revanche, c'est ma petite originalité par rapport aux autres jeux de strip oui ça peut être énervant d'avoir une super main quand l'ordi n'a plus qu'un tapis de 2 mais je trouve que ça augmente l'intérêt du jeu par rapport aux autres jeux que je connais ou je bat l'ordi plus (trop) facilement. Sinon le joueur balance son max uniquement lorsqu'il a une très bonne main et l'ordi plie il perd énormément. l'idée du blocage par tapis m'a semblé être la meilleure façon de contrer ce type de comportement.
Pour le bug de la banque négative du joueur je sais je l'ai déjà remarqué, je compte le modifier ( en plus c'est vraiment un bug facile à corriger) mais comme je l'avais noté ce n'est pour le moment pas bien grave et c'est en faveur du joueur.
Ce projet est dans la continuité avec mon test jeu de bataille ou j'ai des idées pour un futur texas hold em avec variables cloud mais il faut savoir y aller par palier ^^
Je vais réfléchir et digérer l'idée des % fluctuant sur la décision mais c'est sûr c'est l'idée qui me manquait pour rendre l'IA digne de ce nom
SBissay
Scratcher
500+ posts

Poker Witch

Je suis content que mon idée te parle.

Concernant le calcul des probabilités, même si tu n'as pas l'air intéressé, je m'y suis un peu penché par curiosité. j'ai donc fait un petit programme qui compare une main (tirée au hasard) à 1 000 autres au hasard, 10 000 autres au hasard, 100 000 autres puis à toutes les mains possibles (avec les cartes restantes, donc “uniquement” (47 5) possibilités, soit 1 533 939).

Voici quelques résultats (dans l'ordre 1 000 - 10 000 - 100 000 - toutes) :
Une paire de 6 avec des cartes basses à côté gagne quand même 60,096 % du temps :


Un as fort gagne 40.851% du temps :


Une dame forte, c'est tout pourri :


Alors qu'une paire de rois… :


On constate que calculer juste 1000 mains, ça ne prend pas beaucoup de temps (0.3 secondes, à comparer aux 5 minutes pour un test exhaustif) mais donne une assez bonne idée des probabilités, avec une marge d'erreur faible mais existante, qui rajoute à l'“humanité” de l'IA.

Par contre, ça ne tient compte que des mains de 5 cartes de départ, pas de la possibilité de changer des cartes. C'est une évolution que j'apporterais peut-être.

Bon, même si a priori ça ne t'intéresse pas, voici le code (qui doit pouvoir être optimisable) : ici.

Generative art :              Pivot  :               Sudoku :
Itharius
Scratcher
1000+ posts

Poker Witch

Ce n'est pas que ça m'intéresse pas, c'est que je pense que le bot n'a pas à faire le calcul. Car il ne faut pas calculer la probabilité sur X mains au hasard mais seulement la valeur “absolue” de la main que l'ordi possède.L'ordi ne doit pas se dire est-ce que le joueur a une meilleure paire que la mienne ? mais combien vaut ma paire. Parce qu'on ne joue que des “bonnes” mains. En disant ça je ne me place pas comme un spécialiste du poker, car je ne le suis pas et mon expérience est encore plus faible que celle de l'amateurisme. Je ne me base que sur des commentaires d'émissions télévisées. Les gens ne parient pas s'ils ont une paire de 2 en revanche il doivent être prêt à mettre tout leur tapis s'ils ont une paire d'AS ou Roi/as. Bien sûr les pros vont estimer les mains des autres selon leur relances ( pour le hold em) mais dans ce contexte du bot contre 1 joueur, que ce soit pour le joueur comme pour l'ordi, il faut être capable de se dire que si on a une main qui représente un tirage de 5% (exemple pris au hasard) il faut réussir à tout miser même si en fait l'ordi a une main qui représente que 0.5%.

d'où mon idée
exemple: Si l'ordi n'a rien qu'une carte haute AS, il est capable de suivre jusqu'au tapis.
S'il n'a rien et même pas une carte haute As, si on l'oblige à balancer un tapis de départ, il fold.
Si l'ordi a une paire de quelque chose, il fold si il y a x % de son tapis de misé sauf s'il s'agit d'une paire d'AS ou ?.
Si l'ordi a un brelan ou + , il ne fold pas etc etc.

j'ai aussi réfléchi à une nouvelle amélioration à implanter en cas de tirage junk avec juste une carte manquante pour faire une suite. il faut que je différencie les cas de quinte bilatérale et les ventrales car le % de chances d'amélioration va du simple au double et donc il faut que ça influe sur la fluctuation des % de décisions entre bet/call raise et fold.

Pour la phase 2 les “pourcentages de fluctuations” doivent également prendre en compte le cas ou le joueur a échanger 0 cartes ce qui devra entrainer un large pourcentage de chance de l'ordi de fold sauf si celui ci possède un tirage à 5 cartes ou carré évidemment.

Le problème de la paire de 6 avec carte basse (par exemple), c'est que le joueur restera certainement en jeu avec une tête même sans paire surtout un As ou un roi et s'il en tire un autre celà fera donc partie de 40% de mains non gagnante.
Bien sûr en l'état actuel, mon IA n'a pas encore hiérarchisé une paire de 2 et une paire d'AS mais à terme , c'est prévu d'être pris en compte et c'est pour ça que le tableau “probabilité d'avoir au moins” est très intéressant.
je crois qu'il font le même calcul que toi car ça dit la probabilté d'avoir mieux avec une paire de 6 est de 39% ( donc 61% de chance de gagner)
Pour la paire de roi, celà doit venir que tu as rajouter un As à la main car le tableau dit 17;5% de chances d'avoir mieux (soit 82.5% de gagner) soit un résultat quand assez similaire au tien
Itharius
Scratcher
1000+ posts

Poker Witch

le bloc valuate hand détermine les carrés les full et toutes les combinaisons possibles ???

mais lol où tu as choper le deck ? c'est pas le même que le mien est c'est très propre lol !

Je me demandais ou étais la ligne qui mélangeais le deck, j'ai compris que tu tirais les cartes n'importe ou dans le deck ^^ Preuve que j'ai indéniablement progressé à lire du code ^^

l'heure approche où je vais devoir partir au boulot. j'ai pas le temps là mais je comtpe remixer ton projet (sauf si tu le fais toi même évidemment ^^) ce n'est pas intéressant d'avoir une main prise au hasard, il faut demander à l'utilisateur de rentre les cartes qu'il veut évaluer

bon, ton projet me remet à ma petite place entre ton niveau et le mien ^^

Last edited by Itharius (Sept. 7, 2017 12:51:24)

SBissay
Scratcher
500+ posts

Poker Witch

Alors, je ne vois pas en quoi chercher les chances qu'une main a de gagner _sans tenir compte des enchères_ n'est pas décider de la valeur “absolue” de la main… Ce que je veux dire par là, c'est que pour moi, une main meilleure qu'une autre est une main qui a plus de chances de gagner. On ne doit pas être sur la même longueur d'ondes sur ce coup là ^^

Par contre je n'avais pas pris le temps de vérifier par rapport aux résultats que tu avais déjà cités, je suis rassuré de voir que je tombe pas loin \o/

Oui, le bloc valuate hand vérifie toutes les combinaisons possibles, selon ce principe :
D'abord on regarde si on a une couleur et on trie les cartes par valeur descendante (du roi au deux, puis as).
Puis on teste juste un truc : si on n'a pas une suite 5 - 4 - 3 - 2 - 1, les as deviennent les cartes les plus fortes.

Si on a une couleur :
| Si on a une suite :
| | C'est une quinte flush
| Sinon :
| | C'est une couleur toute bête (c'est déjà bien, hein !).
Sinon, on n'a pas de couleur :
| Si on a une suite
| | C'est une suite (pas quinte flush).
| Sinon :
| | Si la première carte est de même valeur que la seconde :
| | | Si la deuxième carte est de même valeur que la troisième :
| | | | Si la troisième carte est de même valeur que la quatrième :
| | | | | C'est une carré
| | | | Sinon :
| | | | | Si la quatrième carte est de même valeur que la cinquième :
| | | | | | C'est un full
| | | | | Sinon :
| | | | | | C'est un brelan
| | | | Sinon : etc.

Je suis pas sûr que ce soit la méthode la plus intuitive, mais c'était celle où j'étais sûr de ne rien oublier ^^

Pour le deck, je l'ai choppé sur un site de vecteurs gratuits, ici je crois.

Oui, j'ai en effet décidé que ce serait moins embêtant de tirer les cartes au hasard que de mélanger le deck, mais ça ne change rien.

N'hésite pas à le remixer, c'est fait pour !

Et le but n'est absolument pas de me faire passer pour meilleur ou pire que toi (et d'ailleurs, ça ne se compare pas : j'ai peut-être une plus grande expérience que toi en programmation, mais jamais je n'aurais eu la patience de faire ce que tu as fait avec les dames). J'ai juste mis le nez là-dedans parce qu'après en avoir parlé, je trouvais le défi intéressant à relever.

Last edited by SBissay (Sept. 7, 2017 13:40:47)


Generative art :              Pivot  :               Sudoku :
CrocodileCroco
Scratcher
100+ posts

Poker Witch

C'est le nom du projet qui m'inquiète , non?

System not found
ma15fo43
Scratcher
1000+ posts

Poker Witch

CrocodileCroco wrote:

C'est le nom du projet qui m'inquiète , non?
?

No longer active on Scratch, I build stuff with TypeScript and Kotlin nowadays. (#3 all-time poster in French forums)
Itharius
Scratcher
1000+ posts

Poker Witch

y a pleins de fichiers super intéressants sur ton lien !!! et free download cool !!!!

Sisi bien sûr que ce calcul m'intéresse puisque en modifiant ton programme pour avoir une main particulière, je vais tester des tas de combinaisons pour connaitre leur valeur.
je ne sais pas si je vais le faire calculer ou non au programme. j'avais 2 a priori, que les résultats ne seraient significatifs qu'après plusieurs dizaine de dizaine de milliers de tests (c'est faux) et que n'empeche ça prend un petit laps de temps à se calculer (pas vraiment si on se contente des 1000 mains en fait). Donc je voulais les calculer au préalable et choisir les % fluctuant de décisions selon ces résultats.
donc oui on s'est pas bien compris car ces chiffres m'intéressent évidemment. je me suis dit avec son échantillon de mains, ça ne va pas forcément prendre en compte toutes les mains et je vois que les résultats semblent très proche et donc ça cherche à déterminer la “valeur absolue” de la main. et c'est vrai que de prime abord je me suis dit tester 1000 mains , c'est pas significatif des 2 500 000 mains alors que bizarrement , les résultats sont assez proche

je me suis rué sur scratch en rentrant du taff, je vais maintenant prendre un peu plus de temps pour regarder le bloc valuate pour voir si tu n'as rien oublier et comment tu t'en es sorti pour déterminer tout les cas d'égalité (peut-être on a même pas besoin de l'envisager d'ailleurs)

Powered by DjangoBB