Files
blackjack/docs/game_flowchart.md
2025-10-27 18:25:57 +01:00

2.2 KiB

Game flow

Flowchart

flowchart TD
  A[Start] --> B[Shuffle deck and deal cards]
  B --> C[Player gets 2 cards, Dealer gets 1 face-up, 1 face-down]
  C --> D{Dealer shows Ace or 10}
  D -- Yes --> E{Dealer has Blackjack}
  E -- Yes --> F[Dealer reveals face-down card]
  F --> G{Player also has Blackjack}
  G -- Yes --> P[Tie]
  G -- No --> L[Player loses]
  D -- No --> H[Player turn begins]
  E -- No --> H
  H --> I{Hit or Stand}
  I -- Hit --> J[Player draws card]
  J --> K{Player busts}
  K -- Yes --> L[Player loses]
  K -- No --> H
  I -- Stand --> M[Player ends turn]
  M --> N[Dealer reveals face-down card]
  N --> O{Dealer hand < 17}
  O -- Yes --> P1[Dealer draws card]
  P1 --> O
  O -- No --> Q{Dealer busts}
  Q -- Yes --> W1[Player wins]
  Q -- No --> R[Compare hands]
  R --> S{Player > Dealer}
  S -- Yes --> W2[Player wins]
  S -- No --> T{Player = Dealer}
  T -- Yes --> P[Tie]
  T -- No --> L[Player loses]
  L --> Z[End: update chips, new round]
  P --> Z
  W1 --> Z
  W2 --> Z

Sequence Diagram

sequenceDiagram
  participant Player
  participant Dealer
  participant Game

  Game->>Player: Deal 2 cards
  Game->>Dealer: Deal 1 face-up, 1 face-down
  Dealer->>Game: Check for Blackjack
  alt Dealer has Blackjack
    Dealer->>Player: Reveal face-down card
    alt Player also has Blackjack
      Game->>Player: PUSH (Tie)
    else Player does not have Blackjack
      Game->>Player: Player loses
    end
  else No Blackjack
    loop Player's turn
      Player->>Game: Hit or Stand
      alt Hit
        Game->>Player: Deal card
        Player->>Game: Check for bust
        alt Bust
          Game->>Player: Player loses
        else Not bust
          Player->>Game: Continue
        end
      else Stand
        Player->>Game: End turn
      end
    end
    Dealer->>Game: Reveal face-down card
    loop Dealer draws until >= 17
      Dealer->>Game: Draw card
    end
    Dealer->>Game: Check for bust
    alt Dealer busts
      Game->>Player: Player wins
    else Compare hands
      alt Player > Dealer
        Game->>Player: Player wins
      else Player = Dealer
        Game->>Player: PUSH (Tie)
      else Dealer > Player
        Game->>Player: Player loses
      end
    end
  end