Powker est un jeu de poker (Texas Holdem) en ligne et multi-joueurs, un projet scolaire réalisé en C#.
[TOC]
Powker est un jeu de poker, de type Texas Holdem, qui ce joue à deux et en ligne.
Note:
- Client / Serveur
- Beautiful UI Console Interface
- Gestion du hasard avancée
Le jeu se jouant à deux, il faudra alors deux clients lancés pour pouvoir y jouer. Une fois connecté, chaque client se voit attribuer sa main. Ensuite, le joueur qui n'est pas le dealer dépose la petite blind et la manche des blinds commence par le dealer. Pour chaque tour, le joueur a le choix parmi les actions suivantes: [C]heck/[C]all, [R]aise, [F]old, [A]ll-in
Une fois le serveur lancé, celui-ci va attendre que deux joueurs se connectent pour pouvoir lancer la partie.
Le protocole utilise NetworkComms pour la communication Client/Serveur ainsi que protobuf pour la sérialisation des données.
Note:
- Protocole Intelligent.
- Protocole Rapide.
- Gestion de la connexion automatique.
- Modulaire via les contextes.
Function | Params |
---|---|
HandShake | ShortGuid, string, string |
Message | string |
Function | Params |
---|---|
StartGameContext | List<string>, int |
StartHandContext | Card , Card , int , int , int , string |
StartRoundContext | GameRoundType , List<Card> , int , int |
Function | Params |
---|---|
EndGameContext | string |
EndHandContext | Dictionary<string, List<Card>> |
EndRoundContext | List<PlayerActionName> |
Function | Params |
---|---|
TurnContext | int, int, int, int, int, int |
Note: Si vous voulez rajouter des contexts, utilisez protobuf pour la sérialisation/désérialisation.
L'algorithme de Shuffle utilisé se réfère à celui de la page 32 du livre "Algorithms" (4th edition) de Robert Sedgewick [https://algs4.cs.princeton.edu/11model/]:
Pour plus d'information regardez le fichier UML Connection Serveur:
Client1->Serveur: HandShake
Note left of Serveur: Serveur Check
Serveur-->Client1: OK
Client2->Serveur: HandShake
Note right of Serveur: Serveur Check
Serveur-->Client2: OK
Connection Client:
s=>start: Start
e=>end: ...
op1=>operation: Input(Sever Address)
cond=>condition: HandShake
s->op1->cond
cond(yes)->e
cond(no)->op1
Network : NetworkComms