du genre
hero bet
vialin 1 call
vilain 2 call
vilain 3 raise all-in
hero fold
vilain 1 call
vilain 2 fold
c'est ca ?
dans ce cas la, tu peux consdirérer, qu'un joueur qui fold, met sa mise dans le pot, et sort du coup, ca ne change rien pour le reste
il fold, son argent va au milieu mais laisse le reste de la situation identique, ton pot sera toujours a augmenter du nombre de joeur restant * tapis du short
en gros parce que sans voir ton code c'est plus compliqué, mais bon (le C, c'est sick, je préf le c++ pour ce genre de truc, mais passons ^^ tu n'as peut-être pas le choix hein ^^)
en pseudo code :
//les joueur sont dans une liste circulaire, la tête représentant le bouton, ou utg-1 fonction de tes gouts
tous les joueurs commencent dans le coup
mise <- big blind ou 0 fonction de la street actuelle
for(joueur actuel <- tete de liste ;joueur = dernier joueur a faire de l'action; joueur actuel ++)
-action <- joueur actuel.action(mise) //le retire de la liste si il fold, diminue son stack s'il call -raise
-if(action > 0) //raise
--mise <- action
--dernier joueur <- joueur actuel
-else if (action < 0)
--liste <- enlever joueur actuel et mettre le pointeur sur le précédent, ou passer le joueur inactif plutot, fin tu vois ca comme tu veux
si un joueur call ou raise all in, on considère que si on continue de miser apres lui, il va toujours call avec un stack nul
tu as maintenant une liste des joueurs avec leur mise totale (action contient la mise la plus haute du tour d'enchère, pour comparer avec la dernière mise de chaque joueurs)
tu regarde si un joueur est all in, si oui, tu prend le plus petit, tu fait un pot, tu le retire de la liste, (idem s'il sont plusieurs avec des stack identiques) tu crée un nouveau pot avec les autre, jusqu'a ce que chaque joueur aie sa mise = 0
tu passe ensuite à la street suivante, en demandant l'action que des joeurs toujours en cours dans le dernier pot crée
à la fin, tu regardes pour chaque pot qui a la meilleur main, en commencant par le plus grand vers le plus petit (ce qui te permet de garder la meilleur main de chaque pot pour la comparer avec celle que tu n'as pas encore regardé dans les plus petit pots)
je suis conscient que ce que je te dit ici ne va pas spécilament t'aider, car il reste le problème de savoir qui appartient a quel pot, mais je dirais que ca tu peux sans doute le déterminer dans la classe pot, ou tu as une liste des participants qui ne peuvent gagner que ce pot (pour pas regarder plusieurs fois les mêmes mains) et tu donne comme paramètre la meilleur main du pot supérieur (si pas de pot supérieur, tu envoies rien obv ^^)
du genre joueur winPot(hand bestHandPrevPot) et joueur winPot()
fin si tu as d'autres questions, je laisse les autres répondrent, je ne pense pas pouvoir t'être encore utile ^^ étant également en train d'apprendre la programation moi même, tu n'as la que des idées, et de nouveaux, sans voir le code, difficile de savoir la facon dont tu te représente le coup
EDIT : tu peux donner un attribut "dans le coup" pour le considérer ou pas, et donc ne pas chipoter a ta liste de joueurs
si "dans le coup" = false, als tu l'ignore et tu saute au suivant
genre while( ! joueur actuel->dans le coup) joueur actuel ++ et voilà, tu zape direct les mecs qui sont sortit