Passer au forum
Programmeur Fou !
 
Notifications
Retirer tout

Programmeur Fou !

31 Messages
12 Utilisateurs
0 Réactions
1,804 Vues

Bonjour à tous, je me présente : HaHaNiceBluF, ancien joueur de cash game sur PartyPoker.fr.

J'ai arrêté de jouer online il y a quelques mois :f_frown: mais j'ai repris la théorie pour me mettre à programmer un jeu de poker Heads UP (1vs1) avec intelligence artificielle :f_eek:.

Je ne sais pas si c'est le bon endroit pour parler de ça mais en tout cas j'espère qu'on me réorientera si ce n'est pas le cas.

Bon bref commençons : j'ai déjà programmé tout ce qui concerne l'interface graphique et les fonctions utiles à la programmation de l'intelligence artificielle (IA) telles que calcul des probas, la mise en mémoire des infos d'un joueur (PFR, etc...). J'ai revu quelques vidéos de HU Gold que j'ai trouvée sur Pokerstrategy. Cela m'a beaucoup servi pour réfléchir à dans un premier temps : comment jouer avant même de connaître son adversaire. Ne vous inquiétez pas je ne vous demanderais rien concernant la programmation car d'ailleurs je suis arrivé à un point où le problème principal réside dans la logique de l'algorithme.

Je voulais savoir si certains connaissent un site avec des informations concernant la façon de jouer au début d'un Heads UP (pas obligatoirement en rapport avec la programmation). J'ai vu que beaucoup conseillent de jouer agressivement pour cerner son adversaire tout de suite. Est-ce le cas à chaque début de partie contre un inconnu ? Merci de vos réponses !


Répondre
Citation
30 réponses
_Anonymous_ Auteur du sujet
_Anonymous_

En fait de manière générale je voudrais savoir si vous aviez des sites, vidéos, livres à me conseiller pour bien comprendre toutes les subtilités du Heads Up.

Merci d'avance et bonne chance à tous !


Répondre
Citation

Euh... c'est un bot que tu developpe? :f_confused:


Répondre
Citation
Modérateur
Steinpilz0104
Inscrit : 10.03.2010

Salut HaHaNiceBluF

Je ne sais pas si tu es au bon endroit ici.... à moins que tu veux réellement commencer un blog...

Normalement, la présentation des nouveaux à lieu dans ce thread (que tu n'as pas visité): https://www.pokerstrategy.com/fr/forum/board.php?boardid=108

Si tu veux, je t'y déplace pour qu'on puisse t'accueillir "comme il faut".

Dis moi donc quelle est ton intention _biggrin:


Répondre
Citation
_Anonymous_ Auteur du sujet
_Anonymous_

Non c'est pour mon usage personnel. En fait tu as raison j'ai oublié de préciser le contexte : j'adore le poker et surtout le Heads Up (car c'est un combat à chaque main). Le seul problème c'est qu'au poker pour avoir un bon adversaire il faut mettre un minimum d'argent en jeu. Moi j'en avais marre de payer pour jouer (je ne joue pas au poker pour l'argent). Et même si tu joues contre un bon joueur, si vous ne misez rien il se peut qu'il joue moins bien. C'est pourquoi j'ai eu l'idée de me créer ce programme d'intelligence artificielle. Rien à voir avec les fameux bots que les cheaters utilisent. Je programme pour moi, pas pour l'argent.

L'avantage du bot c'est que sa qualité de jeu ne dépend pas de l'enjeu.

Voila après tu me crois ou tu ne me crois pas. Mais merci d'avoir poster ce message car je n'avais pas pris conscience qu'on pourrait me prendre pour un cheater _biggrin:

@Steinpilz0104 : non ce n'est pas une présentation, c'est bien un blog que je veux débuter. Vu que je ne vais parler que de la théorie et ce de manière très vaste je ne savais pas trop si je pouvais créer mon blog ici.


Répondre
Citation
Modérateur
Steinpilz0104
Inscrit : 10.03.2010

Salut HaHaNiceBluF

Alors présentes-toi dans la section de présentation et renvoie les lecteurs à ton blog !

Merci


Répondre
Citation

Je pense que tu t'es lancé la dedans par amour du poker mais aussi et surtout par amour du developpement.

Sinon il existe des jeux de simulation de poker qui sont pas mal.

Il y a quelques années j'avais essayé poker academy et il me semble me souvenir qu'il y avait quelques reglages possibles au niveau de l'IA des joueurs.

Depuis doivent etre sorties bien d'autres appli encore plus abouties...


Répondre
Citation
xclairex
Inscrit : 12.07.2010

imo...Si il y a bien un endroit ou un bot aura le plus de mal c'est bien en HU


Répondre
Citation
xclairex
Inscrit : 12.07.2010

Quand il sera finit , je serais ravi de le tester..Pourrais je?


Répondre
Citation

C'est pour du cash, du sng ou les 2?

T'aura pas de site complet, juste des videos qui vont dans tous les sens meme si en general c'est des joueurs gagnants il y a tjs un feeling et des facons differentes de jouer la dedans, voir parfois qq bonnes/mauvaises habitudes et qq leaks.

Faire une IA complete en etant pas gagnant en HU, faut pas trop y compter. C'est largement plus dur que de jouer.

Je suis ingenieur, a dominante info, et reg en sng HU depuis 2 ans. Je peux te filer un coup de main pour l'IA. Idealement faudrait en faire plusieurs et pas une. Pour s'entrainer vaut mieux aussi pouvoir jouer contre des mecs un peu monotaches comme des vrais joueurs plutot que d'essayer de battre uniquement le bot ultime.

J'y avais deja pensé, j'ai qq idées la dessus, si il y a moyen de voir a quoi ressemble ton code (j'espere que t'a pas choisi un language trop exotique...), il y a ptet moyen de faire un truc.


Répondre
Citation
ilares
Inscrit : 26.10.2009

lol on dit programmeur pas programmateur


Répondre
Citation
getthematrix
Inscrit : 21.01.2009

salut,

joli projet ! je vais suivre ça de près.
Par change le titre avec programmeur ;)


Répondre
Citation
jowy88
Inscrit : 09.08.2008

Si tu veux un Bot performant, tourne toi vers le FL, en NL il y a trop de variables à prendre en compte.

Jowy88


Répondre
Citation
_Anonymous_ Auteur du sujet
_Anonymous_

@xclairex : Bien entendu que tu pourras tester mon programme. Je serais très curieux de voir ce que ça donne contre des joueurs qui n'ont pas programmé le jeu _biggrin:
D'ailleurs si l'IA est bonne, je ne devrais pas savoir à quoi correspond telle et telle action de l'ordinateur.

@Kingofdonks : Je programme en langage C avec interface graphique sous CVI (National Instrument). Mais je pense ensuite refaire le code en Java ou un autre langage orienté objet.

Tiens je vous montre à quoi ça ressemble (j'ai pas du tout touché au design donc c'est normal si c'est moche _biggrin: ) :


Jeu PoKeRiRi. Pour info : le call = 1 est normal. C'est le call qui vient d'être fait par l'utilisateur. Les pourcentages des actions préflop seront mises à jour à la fin de la main.

Et voici pour le calcul des probas :

Jeu PoKeRiRi. Probabilités Préflop

Comme vous pouvez le voir sur la photo (en bas à gauche), le programme peut calculer les probas. Je travaillais avec les 2 jeux . C'est normal que l'on voit les jeux de l'utilisateur et de l'ordinateur car il faut bien que je m'assure que l'ordinateur fait ce que je lui demande de faire _grin: .

Les probas ne sont pas encore exactes (marge d'erreur = +- 0,50%) car cela prend du temps à faire le Monte Carlo (faire un grand nombre de tirage pour obtenir la limite des probas) et je n'ai pas envie d'attendre 1 minute avant que l'ordinateur joue un coup (c'est pas des échecs !! _biggrin: ) . C'est d'ailleurs un des seuls problème que j'ai actuellement. J'espère que le langage orienté objet permettra une plus grand puissance de calcul :f_biggrin: )

Sinon le programme retient l'action Préflop du Joueur (l'utilisateur) relance, call, ou se couche et ensuite permet d'avoir des probabilités de PFR, etc...
Le programme calcule aussi le nombre de raise pré flop.

Pour l'instant je travaille essentiellement sur le Préflop (je ne passe pas des heures non plus à cause de ma grande charge de travail en cours) mais ça représente quand même du travail.

Mon algorithme général pour la situation Pré flop serait le suivant :

SI (le nombre de mains jouées est trop petit pour juger le Joueur et si le Joueur n'a pas montré une certaine tendance de jeu (agressif, calling station, etc ...) )
ALORS l'IA joue de manière basique (Raise un limp de la SB, raise souvent en position, etc... )

SINON
On regarde les habitudes prises par le Joueur (en fonction des variables qui retiennent ses actions) et on ajuste le jeu en conséquence.

Je n'ai pas les documents que j'ai écris à propos de la logique mais je crois que de manière générale c'était le raisonnement que j'ai adopté.

Il faut savoir que je souhaite aussi enregistrer les informations sur le Joueur dans un fichier texte (il faut donc mettre un système de ID + Mot de passe) pour que l'IA ne soit pas obligé de partir à zéro à chaque fois.

Voila je devrais mettre des infos prochainement et poser des questions théorique sur le poker et sur une approche de l'intelligence artificielle.

Bonne chance à tous dans votre poker !

:diamond:

Répondre
Citation
_Anonymous_ Auteur du sujet
_Anonymous_

@ jowy88 : Le FL ne m’intéresse pas. Je suis un joueur de NL et c'est la raison pour laquelle je compte développer l'intelligence dans cette variante.
Je sais que cela prend beaucoup de paramètre mais je compte bien y venir à bout :)

Et puis même si je n'arrive pas à avoir un programme parfait, cela me permet de progresser dans deux domaines qui me plaisent : le poker et la programmation.

Mais merci du conseil. Je sais que tu voulais m'éviter une prise de tête évidente :f_grin:

@ ilares et getthematrix : Merci pour la syntaxe du titre _biggrin:

:diamond:

Répondre
Citation

Tu perds en puissance de calcul quand tu passes a un language plus evolue. La difference est minime, mais les interets des languages objets c'est surtout la facilité de programmation et la modularité.
Le language le plus simple quand tu viens du C, c'est le C++. Le java est bien plus éloigné et considéré comme bien plus lent.

Mais bon pas vraiment un truc très important la vitesse, des résultats a 1% sont tout à fait suffisant et c'est même pas vraiment des bons critères de choix à priori sauf dans les cas ou tu veux estimer les situations borderline.

Raise les limps deja c'est pas franchement top, surtout un peu deep.


Répondre
Citation
_Anonymous_ Auteur du sujet
_Anonymous_

Je suis d'accord avec ton opinion sur le raise d'un limp adverse.

Si je le mets dans l'algorithme c'est pour cerner plus vite mon adversaire. Comme je l'ai vu dans beaucoup de parties, les pokerstratèges ont tendance à raise un limp adverse. Cela permet de prendre l'avantage, possibilité de remporter la main tout de suite, d'avoir de l'information, et de pouvoir attaquer au flop si jamais l'adversaire nous paye préflop.

Bien sur que tu as raison : cela dépend de la profondeur du plus petit tapis.

Merci pour l'information. Je vais changer tout ça dans mon programme.
La question a se poser est : quelle serait la valeur maximale du plus petit tapis (en nombre de Big Blind) pour qu'un raise après un limp soit bon ?


Répondre
Citation
_Anonymous_ Auteur du sujet
_Anonymous_

Message original de Kingofdonks :
C'est pour du cash, du sng ou les 2?

C'est pour les 2. Je ferais un 2ème panneau "Option" pour que l'utilisateur puisse définir les paramètres (il y aura entre autre le temps des blinds. Si on indique zéro, cela veut dire que ce sera du cash game).

:diamond:

Répondre
Citation
jowy88
Inscrit : 09.08.2008

Message original de HaHaNiceBluF
Je suis d'accord avec ton opinion sur le raise d'un limp adverse.

Si je le mets dans l'algorithme c'est pour cerner plus vite mon adversaire. Comme je l'ai vu dans beaucoup de parties, les pokerstratèges ont tendance à raise un limp adverse. Cela permet de prendre l'avantage, possibilité de remporter la main tout de suite, d'avoir de l'information, et de pouvoir attaquer au flop si jamais l'adversaire nous paye préflop.

Bien sur que tu as raison : cela dépend de la profondeur du plus petit tapis.

Merci pour l'information. Je vais changer tout ça dans mon programme.
La question a se poser est : quelle serait la valeur maximale du plus petit tapis (en nombre de Big Blind) pour qu'un raise après un limp soit bon ?

Perso ça m'arrive de Limp/call et de float le Cbet face à des joueur super aggro...

Ca permet de voler pas mal de gros pots turn ;).

relancer un limp permet de jouer un gros pot OOP. Il faut vraiment avoir un adversaire passif en face, ou qui fait pas mal d'erreurs pour que ça soit profitable.


Répondre
Citation
_Anonymous_ Auteur du sujet
_Anonymous_

Ok alors ma question est : comment est-il possible de connaitre son adversaire le plus rapidement possible en HU ? _biggrin:


Répondre
Citation