Files
Ustagammon/docs/plans/2026-11-03-match-et-reglages.md
T
2026-11-09 23:37:36 +01:00

5.5 KiB

Match, niveaux et réglages (1c)

  • Date : 2026-11-03
  • Étape : 1c (docs/etape-1.md)
  • Statut : fait (2026-11-09), en attente de vérification
  • Exécutant : sous-agent general-purpose, dans un worktree

Objectif

Choisir sa partie : partie libre ou match en N points, avec les règles de Crawford et de Jacoby, contre l'ordinateur au niveau voulu.

Consignes

ADR 0007, 0008. Le moteur expose depuis 1a les niveaux de gnubg (levelMove, levelCubeDecision) et accepte les matchs dans son API C.

  1. Domaine : longueur de match, score, règle de Crawford (partie Crawford et suivantes, calculées par le moteur via le Match ID), règle de Jacoby en partie libre ; enchaînement des manches d'un match jusqu'à sa fin ; le journal d'événements reste rétrocompatible (les parties existantes se rechargent).
  2. Adaptateur : EngineCube étendu au match (score, longueur, Crawford) ou remplacé par le Match ID, sans casser les appels existants.
  3. Niveau de l'ordinateur : ses coups et ses décisions de videau au niveau choisi. Reprendre de ComputerTurn (gnubg, play.c) les règles de déroulement non reprises en 1a : pré-filtre « fenêtre de marché » et double facultatif à 0 pli, avec citation des sources.
  4. Écran de nouvelle partie (maquettes de la session « identité » si disponibles, sinon sobre et conforme à la charte) : type de partie, niveau (noms montrés au joueur à proposer simplement : Débutant, Amateur, Intermédiaire, Avancé, Expert, Champion — correspondance avec les niveaux de gnubg documentée), conseil du maître activé ou non. Par défaut : partie libre, Intermédiaire, conseil activé. Le réglage est mémorisé.
  5. Affichage du score de match et de la partie Crawford sur le plateau.
  6. Scénarios Gherkin (match en 3 points jusqu'au bout avec dés imposés, Crawford, Jacoby) et fiches du glossaire (match, Crawford, Jacoby si absentes). make lint, make test, make test-browser (un match court).

Critères de réussite

Un match en 3 points se joue jusqu'au bout, au niveau choisi, avec Crawford appliqué ; les trois commandes passent.

Résultat

2026-11-09, branche match-et-reglages (sur accueil-tutoriel-aide puis main fusionnées).

Fait

  1. Moteur (une seule recompilation, engine.c et engine-cli/main.c) : engine_level_double_decision et engine_level_take_decision reprennent ComputerTurn (gnubg, play.c l. 1312-1398 et 1139-1235) : accès au videau et videau < 4096, pré-filtre « fenêtre de marché » (évaluation sans videau à un pli de moins, GetDoublePointDeadCube), double facultatif seulement à 0 pli avec plus de 0,001 de gain, réponse au double selon la décision (castors joués comme une prise). engine_match_after_game : score, fin du match, partie Crawford suivante (play.c l. 1817-1820 ; partie Crawford déjà jouée lue comme gnubg, l. 303 et 4277). engine-cli : double, take, aftergame, matchid étendu aux matchs. Tests dans tests/test_engine.sh.
  2. Domaine : Match, MatchAfterGame (match.ts), niveaux montrés (level.ts : Débutant beginner, Amateur casual, Intermédiaire intermediate, Avancé advanced, Expert 0ply, Champion 2ply ; documenté dans docs/glossaire/niveau-de-jeu.md). Game : niveau et match portés par GameStarted, ordinateur par levelMove/levelDouble/levelTake, GameEnded.match donné par le moteur, nextGame pour la partie suivante. EngineCube étendu au match (vu du joueur au trait) ; le Match ID est écrit par le moteur, liens de position compris. Chaque partie d'un match est une partie enregistrée à part.
  3. Format : événements en version 2, migration testée des journaux de la version 1 (niveau 2 plis explicite) ; résumé avec match facultatif ; quatre réglages nouveaux avec valeur par défaut. Amendement de l'ADR 0007.
  4. Écran #/nouvelle-partie (charte 1c) : segments partie libre/match, longueurs 3/5/7/11, phrases et liens Crawford/Jacoby, six barres de niveau, conseil du maître, barre d'action collée en bas ; choix gardés. Ouvert par le menu (lien), l'accueil et la fin de partie ; « Partie suivante » dans un match qui continue. Adresse ajoutée à l'ADR 0013.
  5. Score : ligne « Match en N points · partie Crawford », pastilles dans les bandeaux, case « sur N » dans la colonne de commandes en paysage, texte pour le lecteur d'écran ; videau caché pendant la partie Crawford ; panneau de fin de partie et de fin de match.
  6. Tests : jouer-un-match.feature (niveau, match en 3 points jusqu'au bout avec dés imposés, Crawford, Jacoby), match.test.ts, tests du domaine (match, migration), tests/browser/match.mjs (écran, match en 3 points joué par l'interface jusqu'au bout, rechargement en cours de match ; captures dans build/browser-shots/match/). play.mjs adapté au passage par l'écran « Nouvelle partie ».

Écarts

  • Le moteur C a changé (fonctions ajoutées, rien de gnubg modifié).
  • Le « conseil du maître » n'est qu'un réglage gardé : il n'existe pas encore (1d).
  • « Mes parties » liste chaque partie d'un match séparément, sans afficher le match ; le résumé porte pourtant match pour le faire plus tard.
  • Le numéro de la partie dans le match n'est pas gardé (SGF : game:0).
  • Longueur par défaut d'un match : 5 points (la charte ne la fixe pas).

Suites : affichage du match dans « Mes parties » ; recette design des captures ; essai sur le Fairphone 4 (temps du niveau Champion).