Match, niveaux et réglages : écran Nouvelle partie, Crawford, Jacoby (1c) #49

Manually merged
pierre merged 8 commits from match-et-reglages into main 2026-11-10 04:20:15 +00:00
Owner

Pourquoi

Jusqu'ici, l'application ne proposait qu'une partie libre, contre un ordinateur de niveau fixe (2 plis). Un débutant de l'Atelier du Huit jouait donc contre un adversaire trop fort, et un joueur de club ne pouvait pas s'entraîner au match, la forme habituelle des tournois.

La sous-étape 1c de docs/etape-1.md demande de choisir sa partie :

  • une partie libre, ou un match en N points avec les règles de Crawford et de Jacoby ;
  • contre l'ordinateur, au niveau voulu ;
  • avec ou sans le conseil du maître.

La charte (docs/identite/charte/ecrans-etape-1.md, chapitre 1c) fixe l'écran et l'affichage du score.

Quoi

  • Écran « Nouvelle partie » (#/nouvelle-partie). Il s'ouvre depuis le menu, l'accueil et la fin de partie. Les choix sont gardés d'une partie à l'autre :

    Choix Options Par défaut
    Type de partie partie libre, ou match en 3, 5, 7 ou 11 points partie libre
    Niveau six niveaux, de Débutant à Champion Intermédiaire
    Conseil du maître activé ou non activé
  • Pendant un match, l'écran de jeu montre :

    • « Match en N points » et le score de chaque camp ;
    • « partie Crawford » quand c'est le cas : le videau est alors masqué.
  • Fin de partie : « Partie suivante » lance la partie suivante avec le score. En fin de match, le panneau donne le vainqueur et le score final.

  • L'ordinateur double, prend et passe comme celui de GNU Backgammon, au niveau choisi.

Comment

Le travail a été délégué à un sous-agent, interrompu une fois par la limite d'usage. Aucune règle n'est écrite hors du moteur.

Moteur : trois fonctions ajoutées à engine.h. Aucun fichier de gnubg n'est modifié.

  • engine_level_double_decision et engine_level_take_decision reprennent ComputerTurn de gnubg (play.c l. 1312-1398 et 1139-1235) : fenêtre de marché, double facultatif à 0 pli, réponse au double.
  • engine_match_after_game donne le score après une partie, la fin du match et la partie Crawford suivante (play.c l. 1817-1820).

engine-cli les expose (double, take, aftergame), et matchid code désormais un match.

Domaine :

  • chaque partie d'un match est une partie à part entière ;
  • son GameStarted porte le niveau et le match ;
  • son GameEnded porte le match après la partie, tel que le moteur l'a calculé ;
  • l'adaptateur passe le match au moteur dans le Match ID.

Format des événements, version 2 : une migration testée (migrateJournal) rend explicite le niveau des anciennes parties, qui était implicitement 2 plis. L'ADR 0007 est amendé pour le format, l'ADR 0013 pour la nouvelle adresse.

Correspondance des niveaux, documentée dans docs/glossaire/niveau-de-jeu.md :

Nom affiché Niveau gnubg
Débutant beginner
Amateur casual
Intermédiaire intermediate
Avancé advanced
Expert 0 pli
Champion 2 plis

Vérification, après fusion de main (MR !44) :

  • make lint : aucun problème ;
  • make test : 10/10, dont le scénario jouer-un-match.feature (niveau ; match en 3 points avec dés imposés ; Crawford ; Jacoby) ;
  • make test-browser : passe en un seul passage dans Chromium et Firefox. Le nouveau script match.mjs joue un match en 3 points jusqu'au bout, avec une partie Crawford et un rechargement en plein match.

Choix et compromis

  • Un journal par partie, plutôt qu'un seul journal pour tout le match. Les branches, l'export SGF et « Mes parties » ne changent pas. En contrepartie, « Mes parties » montre chaque partie du match séparément.
  • Les niveaux 3 et 4 plis sont écartés : trop lents sur le téléphone.
  • Pas de castor : l'ordinateur prend, comme gnubg quand il ne peut pas en faire.
  • Longueur de match par défaut de 5 points : la charte ne la fixe pas. Pierre peut la changer.
  • Le conseil du maître n'est encore qu'un réglage : le conseil lui-même arrive avec 1d.
  • « Nouvelle partie » dans le menu ouvre désormais l'écran des choix, au lieu de lancer la partie tout de suite.

Risques et déploiement

  • Journaux migrés en version 2 à leur reprise. Une version antérieure de l'application ne relirait plus une partie reprise par celle-ci. Le schéma IndexedDB, lui, ne change pas.
  • Moteur WebAssembly modifié : il est reconstruit par make site et distribué par le mécanisme de mise à jour.
  • Retour arrière : annuler la fusion. Les parties jouées entre-temps restent en version 2.

Comment vérifier

make lint && make test && make test-browser
build/engine-cli --level 2ply double /38AAABQAAAAAA MAEAAAAAAAAA
build/engine-cli aftergame MAFgAAAAAAAE 0 2        # partie Crawford suivante
ls build/browser-shots/match/

Après la publication, ouvrir #/nouvelle-partie, choisir un match en 3 points au niveau Débutant, et le jouer jusqu'au bout.

Hors périmètre

  • « Mes parties » : l'affichage du match lui-même.
  • Export SGF : le numéro de la partie dans le match et la règle de Jacoby.
  • Conseil du maître : il arrive avec 1d.
  • Fairphone 4 : l'essai du niveau Champion sur le téléphone.

Generated with Claude Code https://claude.com/claude-code

## Pourquoi Jusqu'ici, l'application ne proposait qu'une partie libre, contre un ordinateur de niveau fixe (2 plis). Un débutant de l'Atelier du Huit jouait donc contre un adversaire trop fort, et un joueur de club ne pouvait pas s'entraîner au match, la forme habituelle des tournois. La sous-étape 1c de `docs/etape-1.md` demande de choisir sa partie : - une partie libre, ou un match en N points avec les règles de Crawford et de Jacoby ; - contre l'ordinateur, au niveau voulu ; - avec ou sans le conseil du maître. La charte (`docs/identite/charte/ecrans-etape-1.md`, chapitre 1c) fixe l'écran et l'affichage du score. ## Quoi - **Écran « Nouvelle partie »** (`#/nouvelle-partie`). Il s'ouvre depuis le menu, l'accueil et la fin de partie. Les choix sont gardés d'une partie à l'autre : | Choix | Options | Par défaut | | --- | --- | --- | | Type de partie | partie libre, ou match en 3, 5, 7 ou 11 points | partie libre | | Niveau | six niveaux, de Débutant à Champion | Intermédiaire | | Conseil du maître | activé ou non | activé | - **Pendant un match**, l'écran de jeu montre : - « Match en N points » et le score de chaque camp ; - « partie Crawford » quand c'est le cas : le videau est alors masqué. - **Fin de partie** : « Partie suivante » lance la partie suivante avec le score. En fin de match, le panneau donne le vainqueur et le score final. - **L'ordinateur double, prend et passe comme celui de GNU Backgammon**, au niveau choisi. ## Comment Le travail a été délégué à un sous-agent, interrompu une fois par la limite d'usage. Aucune règle n'est écrite hors du moteur. **Moteur** : trois fonctions ajoutées à `engine.h`. Aucun fichier de gnubg n'est modifié. - `engine_level_double_decision` et `engine_level_take_decision` reprennent `ComputerTurn` de gnubg (play.c l. 1312-1398 et 1139-1235) : fenêtre de marché, double facultatif à 0 pli, réponse au double. - `engine_match_after_game` donne le score après une partie, la fin du match et la partie Crawford suivante (play.c l. 1817-1820). engine-cli les expose (`double`, `take`, `aftergame`), et `matchid` code désormais un match. **Domaine** : - chaque partie d'un match est une partie à part entière ; - son `GameStarted` porte le niveau et le match ; - son `GameEnded` porte le match après la partie, tel que le moteur l'a calculé ; - l'adaptateur passe le match au moteur dans le Match ID. **Format des événements, version 2** : une migration testée (`migrateJournal`) rend explicite le niveau des anciennes parties, qui était implicitement 2 plis. L'ADR 0007 est amendé pour le format, l'ADR 0013 pour la nouvelle adresse. **Correspondance des niveaux**, documentée dans `docs/glossaire/niveau-de-jeu.md` : | Nom affiché | Niveau gnubg | | --- | --- | | Débutant | beginner | | Amateur | casual | | Intermédiaire | intermediate | | Avancé | advanced | | Expert | 0 pli | | Champion | 2 plis | **Vérification**, après fusion de main (MR !44) : - `make lint` : aucun problème ; - `make test` : 10/10, dont le scénario `jouer-un-match.feature` (niveau ; match en 3 points avec dés imposés ; Crawford ; Jacoby) ; - `make test-browser` : passe en un seul passage dans Chromium et Firefox. Le nouveau script `match.mjs` joue un match en 3 points jusqu'au bout, avec une partie Crawford et un rechargement en plein match. ## Choix et compromis - **Un journal par partie**, plutôt qu'un seul journal pour tout le match. Les branches, l'export SGF et « Mes parties » ne changent pas. En contrepartie, « Mes parties » montre chaque partie du match séparément. - **Les niveaux 3 et 4 plis sont écartés** : trop lents sur le téléphone. - **Pas de castor** : l'ordinateur prend, comme gnubg quand il ne peut pas en faire. - **Longueur de match par défaut de 5 points** : la charte ne la fixe pas. Pierre peut la changer. - **Le conseil du maître n'est encore qu'un réglage** : le conseil lui-même arrive avec 1d. - **« Nouvelle partie » dans le menu** ouvre désormais l'écran des choix, au lieu de lancer la partie tout de suite. ## Risques et déploiement - **Journaux migrés en version 2** à leur reprise. Une version antérieure de l'application ne relirait plus une partie reprise par celle-ci. Le schéma IndexedDB, lui, ne change pas. - **Moteur WebAssembly modifié** : il est reconstruit par `make site` et distribué par le mécanisme de mise à jour. - **Retour arrière** : annuler la fusion. Les parties jouées entre-temps restent en version 2. ## Comment vérifier ``` make lint && make test && make test-browser build/engine-cli --level 2ply double /38AAABQAAAAAA MAEAAAAAAAAA build/engine-cli aftergame MAFgAAAAAAAE 0 2 # partie Crawford suivante ls build/browser-shots/match/ ``` Après la publication, ouvrir `#/nouvelle-partie`, choisir un match en 3 points au niveau Débutant, et le jouer jusqu'au bout. ## Hors périmètre - **« Mes parties »** : l'affichage du match lui-même. - **Export SGF** : le numéro de la partie dans le match et la règle de Jacoby. - **Conseil du maître** : il arrive avec 1d. - **Fairphone 4** : l'essai du niveau Champion sur le téléphone. Generated with Claude Code https://claude.com/claude-code
pierre added 7 commits 2026-11-09 23:30:47 +00:00
Fenêtre de marché et double facultatif à 0 pli (play.c), réponse au
double, règle de Crawford automatique ; commandes double, take et
aftergame d'engine-cli, matchid étendu aux matchs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Partie de match (score et Crawford dits par le moteur), niveau choisi
porté par GameStarted, ordinateur joué comme ComputerTurn de gnubg ;
migration des journaux de la version 1 ; scénarios, glossaire, ADR 0007
et 0013 amendés.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Écran #/nouvelle-partie (type de partie, niveau, conseil du maître,
choix gardés), score du match en portrait et en paysage, videau caché
pendant la partie Crawford, « Partie suivante » ; test navigateur d'un
match en 3 points jusqu'au bout.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflits résolus dans web/app.css (styles ajoutés des deux côtés) et
app/src/ui/help.ts (commentaire de main, fiche de la branche).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Après la fusion de main, l'aide amenait la carte du terme en haut alors
que la marge de défilement est posée sur son titre (dt).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflits : l'aide garde l'approche de main (défilement sur la carte du
terme) ; styles des deux côtés conservés.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pierre added 1 commit 2026-11-10 04:04:02 +00:00
- Paysage : pendant la partie Crawford, la consigne de la bande centrale
  commence par « Partie Crawford · » ; la police se resserre si besoin.
- Écran « Nouvelle partie » en paysage : deux colonnes au-dessus de la
  barre d'action (type de partie et longueur à gauche, niveau et conseil
  du maître à droite), tout tient en 915x412 et en 844x320.
- Fin de partie : « Rejouer » relance tout de suite une partie aux mêmes
  réglages (un match de même longueur après un match), « Partie suivante »
  dans un match qui continue, lien « Changer les réglages ».
- Recette automatique : aucun élément interactif visible sous une barre
  d'action collée, vérifié sur chaque écran capturé (tests/browser/recette.mjs).
- Scénario « Comment rejouer avec les mêmes réglages ? ».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pierre manually merged commit 526e47e79b into main 2026-11-10 04:20:15 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: pierre/Ustagammon#49