← Tous les projets

Jeux

Bataille (jeu de cartes)

Réécriture d'un jeu de mes études : la bataille, jeu de cartes, en Ada.

Terminé Sprint S21 · 3 points
En bref, sans jargon pour les non-informaticiensLire le résuméRefermer
Ce que c'est
Le jeu de cartes de la bataille, simulé 100 000 fois pour répondre à une question : une partie finit-elle toujours ? Non, 42 % ne finissent jamais.
À quoi ça sert
Un jeu de mes études, réécrit de zéro avec les méthodes d'un projet professionnel : tests automatiques, versions pour plusieurs systèmes.
Ce que ça montre
Le langage Ada, réputé pour sa sûreté, et l'art de répondre à une question par la simulation.
Code source

Comment les morceaux tiennent ensemble

Schéma : Cartes → Partie (jouées) ; Partie → Terminal (raconte) ; Partie → Statistiques ; Statistiques → stats.json (écrites en JSON) ; stats.json → Fiche du site ; Tests → Partie (vérifient). jouées raconte écrites en JSON vérifient Cartes types Ada, contrats Partie mélange, plis, batailles Terminal pli par pli Statistiques 100 000 parties stats.json lu au build du site Fiche du site graphiques Tests AUnit

Ce que disent 100 000 parties

Le programme Ada a joué les 100 000 parties des graines 1 à 100 000, jusqu'à 10 000 plis chacune ; les chiffres viennent de son fichier de sortie, recalculé par la CI.

des parties ne finissent jamais (42 346 parties)
42,4 %
plis en moyenne quand la partie finit
1 689
batailles par partie, en moyenne
39,2
des parties finies gagnées par le premier joueur
52,9 %
plis de la plus courte à la plus longue
20 – 9 994

Pourquoi tant de parties sans fin ? Ici, le gagnant d'un pli ramasse toujours les cartes dans le même ordre : le jeu redevient déterministe et peut tourner en rond. Entre de vrais joueurs, l'ordre change d'un pli à l'autre et la partie finit presque toujours.

Technologies

  • Ada
  • Alire
  • AUnit

Qui fait quoi

Ada
Le jeu : des types qui excluent les cartes impossibles, des paquets à contrats, un mélange xorshift64 ; 100 000 parties simulées pour les statistiques de la fiche.
Alire
La même chaîne GNAT et AUnit en local et en CI, sur les trois systèmes.
AUnit
Les tests des règles, des contrats et du mélange.

Definition of Done

  • Code relu, diff par diff
  • Tests unitaires et d'intégration verts
  • CI verte sur Linux, Windows et macOS si compilé
  • README, REVIEW.md et DECISIONS.md à jour
  • Textes en français et en anglais
  • Démo déployée et testée sur mobile