This is a Blackjack game/simulator that I made in Rust, implemented via a state machine. My goal with this project is to enable users to investigate the difference in the house edge between arbitrary table rules, by running millions of concurrent simulations. One should be able to start two concurrent simulations with slightly different rules and see how the results change in the long run.
The project consists of three separate crates:
blackjack-core
: The backend functionality, including the state machine and data object model.blackjack-cli
: A simple command-line frontend. This was the original format of the application.blackjack-gui
: A more advanced GUI application built using Ratatui.
- Fully-featured Blackjack gameplay
- Highly configurable
- Surrendering (early and late)
- Insurance (even though it's a bad idea)
- Simulation with Basic Strategy
- (GUI) Many simultaneous games
- (GUI) Continuous game statistics
- Display more visuals in the GUI
- Switch between gameplay and simulation on-the-fly
- Rule-adaptive basic strategy