Cribbage
·J’aime les jeux de cartes.
Quand mon amie m’a montré comment jouer au Cribbage, j’ai décidé que la meilleure manière d’apprendre les règles était de programmer ma propre version du jeu.
Structure du projet
Le projet est séparé en 3 sections: le core du jeu, l’application de test console et le serveur web.
Le core exécute le jeu en soi d’une manière indépendante. Il ne fait qu’attendre une saisie des joueurs que lorsque nécessaire. N’importe quel utilisateur peut se connecter dans les évènements du core et répondre selon les besoins du jeu. Ceci permet de connecter divers UI ou de programmer plusieurs situations en parallèle, par exemple: tester et jouer au jeu.
Structure simplifiée du projet
Séquence de jeu
La séquence de jeu est relativement simple: rejoindre une partie, jouer comme à l’habitude.
La boucle de jeu n’est qu’une machine à états finis décrite par les états ainsi que la figure suivants.
- Mélanger les cartes
- Piger les mains des joueurs (6 cartes par joueur dans une partie de 2 joueurs)
- Construire le crib (2 cartes par joueur dans une partie de 2 joueurs)
- Piger la carte de départ
- Jouer les mains des joueurs
- Pointer les mains des joueurs
- Pointer le crib
En tout point, si un joueur a 121 points ou plus, il ou elle gagne la partie.
Survol de la boucle de jeu
Stack technique
Le jeu et le serveur web sont tous les deux conçus avec Go parce que je trouve le langage facile et plaisant.
L’interface frontend est générée par templ et vise à être servie par SSR.
L’interactivité est ajoutée via HTMX pour les requêtes génériques et via des websockets (Javascript + JSDoc) pour les évènements reliés au jeu.