Single-player Blackjack including GUI and CLI interfaces, written in Python. Can be used to simulate games with or without card counting and to practise basic strategy.
blackjack-gui
requires Python 3.8 or newer and uses tkinter. Make sure it's installed in your system:
$ sudo apt install python3-tk
or similar (otherwise, you'll see ModuleNotFoundError: No module named 'tkinter'
).
Then:
$ python3 -m venv venv
$ source venv/bin/activate
$ pip3 install blackjack-gui
blackjack [OPTION...]
blackjack --gui=False [OPTION...]
Name | Default | CLI only | Description |
---|---|---|---|
--stack |
1000 | Initial stack. | |
--bet |
1 | Initial bet size. | |
--n_games |
10 | x | Number of rounds to be played. |
--ai |
False | x | If True, computer plays instead of you. |
--count |
False | x | If True, ai uses card counting. |
--loglevel |
DEBUG | x | Adjust amount of logging: DEBUG or INFO. |
--cards |
Determine the first player cards, e.g. --cards=A,8,K . Shuffles the shoe after every hand. |
||
--dealer_cards |
Determine the first dealer cards. Useful for testing. |
Open the GUI version:
$ blackjack
With the default settings, play 10 rounds of Blackjack without GUI:
$ blackjack --gui=False
Let the computer play perfect basic game and use card counting technique to bring down the house:
$ blackjack --n_games=100000 --ai=True --count=True --loglevel=INFO --gui=False
Simulate soft 19 starting hand only:
$ blackjack --n_games=10000 --ai=True --loglevel=INFO --gui=False --cards=A,8
Blackjack rules vary depending on the casino. In this application they follow: https://casinohelsinki.fi/en/games/blackjack-eng/, i.e.:
- 6 decs
- Blackjack pays 3 to 2
- Dealer must stand on soft 17
- Any two cards can be doubled
- Max. 4 hands can be achieved by splitting
- Aces can be split but they receive only one extra card
- Doubling after splitting is allowed
- Surrender is allowed but not against Ace
- Note that 16 vs 10 with 3 or more cards = Stay
Install blackjack-gui
with dev-dependencies from GitHub:
git clone https://github.com/tukiains/blackjack-gui
cd blackjack-gui/
python3 -m venv venv
source venv/bin/activate
pip3 install --upgrade pip
pip3 install .[dev]
pre-commit install
Run unit and integration tests:
pytest tests/unit.py
pytest tests/integration.py
Run pre-commit
checks:
pre-commit run --all
- Card images taken from here.
MIT