Casino games (Roulette and Craps) simulated using object orientated design best practices, with general classes such as Table, Bet and Outcome being shared between games.
Several Player classes have been implemented to play with a variety of well-known betting strategies. Statistics are gathered over multiple runs of the simulation to compare the efficacy of these strategies (or which strategy loses the least money).
Software quality:
- Complete with a full pytest test suite covering all code and functionality
- Typed, type checking with mypy
- Code formatting with black
Design patterns explored:
- State
- Builder
- Factory
- Strategy
- Lazy initialization
- Wrap / extend
Repository of code from study of "Building Skills in Object-Oriented Design" by S. Lott.