Design Doc: https://docs.google.com/document/d/1Jrapj4DCRUwRQ8jhN-5sNaVtyrHQgVImMdY1_AJuneY/edit?usp=sharing
UI feature is currently not implemented Use keyboard to play:
- 'a' to take seats
- 'h' to hit
- 's' to stand
- 'd' to double down
- double down feature not yet complete along with player bet and cash logic
- Single player game
- Standard blackjack game rule
- Player cash with ability to bet using their cash pool
- Ability to play multiple rounds with persistent cash pool
- Ability to save game state and restore after a restart
- Customizable game settings
- Minimum bet amount
- Player’s start cash amount
- Randomly setting value of the card
- Flip (front/back)
- Determine numeric value of a card
- Configure game settings
- Minimum bet amount
- Player’s start cash amount
- Player is able to join a table/round
- A deck of card is shuffled before starting
- Dealer
- Hands out cards and controls the flow of the game
- Dealer
- Consists of 52 x 8 (416) cards
- Save current game state
- List of possible state values/object
- Player’s money
- List of possible state values/object
- Set card type on construction
- Flip
- States
- Front
- Show front of the card with proper image based on the value of the card
- Back
- Show back of the card
- Front
- States
- Stores images of cards
- Store a container of 52 x 8 cards
- Shuffle
- Shuffle the container of cards randomly
- Get card
- Returns a card from the front
- Can be player or dealer type
- Determine type (player/dealer) on construction
- Holds container of cards that have been dealt to the player/dealer hand
- Get card value
- For a given card return the value of the card
- Get game settings
- Read game settings from a scriptable object
- Dealer
- Ability to control the flow of the game
- Control what happens when player “hit”
- Control what happens when player “stand”
- Control what happens when player “double down”
- Control seats; assign, place, and bust/remove
- Clear seat
- Clear card in hand
- Clear bet
- Clear table
- Reset pool of cards
- Determine outcome
- Player cards in hand
- Player cash in hand
- Player total betting amount
- Card game object(s)
- Represents player’s cards in hand
- Cash in hand display
- UI displaying how much cash player has in hand
- Accumulated betting amount
- UI displaying player’s current accumulated betting amount
- UI Buttons
- Start
- Player receives cash to start
- Join table
- Gameplay
- Hit
- Stand
- Double Down
- Leave table
- PlayerBlackjackModel
- Cards in hand
- Cash in hand
- Total betting amount
- DealerBlackjackModel
- StartBlackjackView
- UI elements
- Start button
- Player cash
- UI elements
- JoinBlackjackView
- UI elements
- Join button
- Player cash
- UI elements
- PlayBlackjackView
- UI elements
- Hit button
- Stand button
- Double down button
- Player cash
- Player betting amount
- UI elements
- ExitBlackjackView
- UI elements
- Continue button
- Player cash
- UI elements
- Derived classes
- SinglePlayerBlackjackController
- MultiplayerBlackjackController