This is a project realize during my BA3 at EPFL. This was previously hosted on our school intern git server.
- Bassier Jeanne Louise, jeanne.bassier@epfl.ch, Frontend
- @Krut007, Game logic
- @Jakub-Kliment, Data serilization and type
- @GuillaumeLepin, Testing and winner logic
A state-driven, multiplayer poker game for up to five players. This app offers a streamlined poker experience with live updates, seamless transitions between game phases, and an intuitive interface for players to enjoy.
Run this program using Scala SBT. Simply execute sbt run and follow the on-screen instructions.
Players arrive at the ScalApp page. They chose 6poker9 and enter the userIds of the players, that can go from 2 up to 5. Then the game is launched.
- Trigger: The player accesses the game lobby or is invited to a game session.
- Experience:
- The player selects his username
- A screen is displayed with the title “6poker9”, the poker table and the 5 dealer's cards turned over. The pool amount is 0 and we see an emoji 💰.
- Each player sees its cards, balance and current bet. He sees the same information about the other players except their cards.
- Trigger: It is the player's turn to act.
- Experience:
- Highlight the player's turn with a clear indicator that is a green dot emoji next to their name.
- Present context-sensitive action buttons: "Check", "Call", "Raise", and "Fold". Next to "Raise" is provided an input box to set the raise amount. Alerts are thrown if the action is invalid.
- When the choice is made, the buttons disappear.
- Trigger: Another player takes their turn.
- Experience:
- Show a message to inform what the player did (e.g., "Player1 folded", "Player2 raised by 50").
- Update the other players' information dynamically with the new balance, current bet and if the player doesn't fold, his cards stay turned face down.
- Trigger: The game progresses to the Flop, Turn, or River phases.
- Experience:
- Reveal dealer's cards one by one during each phase similarly to a poker game so that players can choose their next strategy based on the newly revealed cards.
- Trigger: The final betting round ends, and remaining players reveal their hands.
- Experience:
- Show each player's hand with their username and balance.
- A message is displayed to announce the winner of the round based on the regular rules during a few seconds.
- Trigger: The round ends, and the game is ready for the next hand.
- Experience:
- Allow players to prepare for the next round by displaying a button to click when the player is ready.
- When all the players clicked on ready, a new round is started and cards are distributed. The game restarts with a new round such that players balances are updated based on the result of the previous round.
- Multiplayer: Up to 5 players per game.
- Turn-Based Gameplay: Each player can select their actions (check, call, raise, fold) during their turn.
- Live Updates: The balances (scores) of each player, their current bet, their cards and those of the dealer are displayed in real time. There is a green dot emoji that follows the current player.
- Smooth Transitions: The game progresses automatically through various stages:
- The player receives his cards and joins the game. He can raise, check/call or fold.
- The player made a choice and it's the turn of the next player.
- The dealer's cards are shown (flop, turn, river)
- All the cards are shown, the winner is determined and there is a waiting for everybody to click on the ready button to play another round.
- Intuitive Interface: Contextual actions, clear turn indicators, and essential information displayed.
- Royal Flush: A, K, Q, J, 10 of the same suit.
- Straight Flush: 5 consecutive cards of the same suit.
- Four of a Kind: 4 cards of the same value.
- Full (Full House): 3 cards of one value + 2 cards of another value.
- Color (Flush): 5 cards of the same color.
- Straight: 5 consecutive cards of different colors.
- Three of a Kind: 3 cards of the same value.
- Double Pair (Two Pair): 2 pairs of cards of different values.
- One Pair: 2 cards of the same value.
- High Card: If no combination is formed.
- Pre-flop: Each player receives 2 hole cards.
- Flop: 3 dealer's cards are revealed.
- Turn: A 4th dealer's card is revealed.
- River: A 5th dealer's card is revealed.
- Showdown: The remaining players reveal their cards to determine the winner.