Problem statement
Design the object model and core APIs for a single-table Blackjack engine that deals a round, resolves player actions against a dealer, and settles bets.
Operating context. One table, one dealer, and 1-6 seated players sharing a shoe of one or more standard 52-card decks. Each round deals two cards to every player and the dealer (one dealer card face-down). Players act in seat order with hit, stand, double-down, split, and surrender; splitting a pair produces a second hand played independently. The dealer then plays a fixed house rule (for example, stands on soft 17), and each bet settles: a natural blackjack pays 3:2, a bust or lower hand loses, an equal total pushes. The shoe reshuffles when a cut card is reached. All in-process, single session, no real money.
Out of scope. Bankroll and chip-ledger persistence, card-counting or fraud detection, networked multiplayer, provably-fair or hardware RNG, and any UI or table rendering.
What to produce. The class hierarchy (round, dealer, player, hand, card, shoe, rules), the public API each exposes, hand-value computation with soft and hard aces, and the player-action state machine including how a split spawns a second hand. Be explicit about how house rules (deck count, soft-17 behavior, payout ratio, resplit limit) are injected rather than hard-coded, how the shoe/RNG is made deterministic for tests, and how settlement handles blackjack, bust, and push.
Requirements
This assessment is a Premium feature.
The statement above is free to read. The functional and non-functional requirements, and the graded canvas that scores your design against them, come with Premium.
Topics
- System Design LLD
- Oop Solid
- Patterns State
- Patterns Strategy
- Domain Card-Games