In this tutorial, you will learn step-by-step how to implement a poker bot in Python.
Step 1 – Setup Python and Install Packages
First, we need an engine in which we can simulate our poker bot. Install the following package (PyPokerEngine) using pip:
1 |
|
It also has a GUI available which can graphically display a game. If you are interested, you can optionally install the following package (PyPokerGUI):
Both the engine and the GUI have excellent tutorials on their GitHub pages in how to use them. The choice for the engine (and/or the GUI) is arbitrary and can be replaced by any engine (and/or GUI) you like. However, the implementation of the bot in this tutorial depends on this choice, so you need to rewrite some if the code if you plan to change the engine (and/or GUI).
Small note on the GUI: it did not work for my directly using Python 3. This fix explains how to make it work.
Step 2 – Implement your Bot!
The first step is to setup the skeleton of the code such that it works. In order to do so, I created three files. One file containing the code for the bot (databloggerbot.py), another file containing the code for a bot which always calls and another file for simulating one game of poker (simulate.py) in which many runs are simulated. The files initially have the following contents:
1 |
|
databloggerbot.py
1 |
|
callbot.py
1 |
|
simulate.py
The bot uses Monte Carlo simulations running from a given state. Suppose you start with 2 high cards (two Kings for example), then the chances are high that you will win. The Monte Carlo simulation then simulates a given number of games from that point and evaluates which percentage of games you will win given these cards. If another King shows during the flop, then your chance of winning will increase. The Monte Carlo simulation starting at that point, will yield a higher winning probability since you will win more games on average.
If we run the simulations, you can see that the bot based on Monte Carlo simulations outperforms the always calling bot. If you start with a stack of $100,-, you will on average end with a stack of $120,- (when playing against the always-calling bot).
It is also possible to play against our bot in the GUI. You first need to setup the configuration (as described in the Git repository) and you can then run the following command to start up the GUI:
1 |
|
Good luck beating the bot!
Conclusion (TL;DR)
In this simple tutorial, we created a bot based on Monte Carlo simulations. In a later blog post, we will implement a more sophisticated Poker bot using different AI methods. If you have any preference for an AI method, please let me know in the comments!