Challenge our machine learning-trained poker bot and test your skills against a sophisticated opponent
This video walkthrough explains the Model-View-Controller architecture of our PokerBot project and demonstrates the gameplay and AI decision-making process.
A student-friendly, fixed-limit Texas Hold'em sandbox built with Pygame. Our SoftDes 2025 project features a sophisticated limit hold'em poker bot trained using machine learning algorithms.
This lightweight classroom project lets you explore the core logic of fixed-limit Texas Hold'em without the complexity of a full casino client. It is intentionally streamlined for learning.
To create a machine learning-trained limit hold'em poker bot that provides a challenging and realistic poker experience for players, while demonstrating MVC architecture and reinforcement learning principles.
Our bot uses Q-learning, a reinforcement learning technique, to adapt its betting strategy over many hands. The more you train it, the better it becomes at making strategic decisions.
Built using Model-View-Controller (MVC) architecture to keep graphics, game state, and input handling cleanly separated, making the codebase easy to understand and extend.
Our hand evaluator is based on Cactus Kev's Poker Hand Evaluator, originally written in C and reimplemented in Python for this project. The playing cards used in the game are in the public domain, and the loading screen graphics are AI-generated.
Our poker bot is built with a clean Model-View-Controller architecture that separates concerns and makes the code easy to understand and extend.
Key Classes: Model, QBot
Key Classes: PokerView
Key Classes: Controller
Our poker bot implements fixed-limit Texas Hold'em, which has specific betting rules that differ from the more common no-limit variant:
Our talented team of developers and poker enthusiasts who brought this project to life.
Follow these steps to get started with our poker bot.
1. Clone the repository
2. Navigate to project directory
3. Install dependencies
1. Generate preflop strength data
This generates probability data for starting hands.
2. Train the ML bot (optional but recommended)
Replace 1000 with desired number of training hands. More training leads to better bot performance.
3. Start the game
Running Tests: