PokerFace Github Report

Realisation of a complete Poker Texas Hold'em game with an artificial intelligence.
Java, Swing

The purpose of this project was to realise an offline poker game with some bots. The difficulty of this project was to have some realistic behaviours for the bots. We have simulated several player profiles (aggressive, prudent, etc.) and also some others behaviours like the bluff. The intelligence is based on statistics which are computed in real time (the simulations are distributed to all the cores of the processor) and mixed with 4D functions which allow to define a probability for each possible action to play. Some random factors are present in order to have dynamic and the least unpredictable behaviours

The Project

Artificial intelligence

During a game, a user can play with at most nine artificial players. We have designed an intelligence based on 4D functions, one for each phase of the game. Each function takes as parameters the probability of win, the ratio of the bet with his bankroll as well as the money already invested in the game. The output is the probability to follow. Afterwards, we have to decide if we raise the bet or just follow, for this we use a simple function we also designed.

Statistics with simulations

One of the input of our intelligence is the probability to win. In order to approximate this value, for each phase of the game we run 20'000 simulations on all the cores of the computer. This allows us to all the resources of the computer while the player is playing normally. When it is to the player to play the simulations stop (if not yet finished) to show the results.

High-level technical specification with extreme requirements

Asked to realize a perfect pre-project phase in order to validate software engineering module. We did a complete work of classes definitions, sequence diagrams elaboration, use cases and scenarios reflection and project management. For the exercise more than a real purpose, we accomplished the project development in 3 steps, using a project management method approaching the well-known SCRUM method.


Type Semester project
Degree B.Sc. HE-Arc HE-Arc, 2nd year
Course Semester project coupled with Software engineering course
Duration ~100 hours
Supervisor Prof. Aïcha Rizzotti, Prof. Yassin Aziz Rekik
Co-developers Alexandre Perez, Danick Fort