Le classement du conseil vient de l'analyse du coup joué (conseils en
version 2) : mêmes équités que la feuille du maître et l'analyse. Le
titre dit le niveau du meilleur coup ; une ligne plus basse le dit aussi.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 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>
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>
Le moteur écrit et décode le Match ID ; readPosition valide un lien,
linkOf donne celui d'une partie, setupOf la partie à jouer depuis la
position. Scénario « Partager une position », fiche « Lien de position ».
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le tour du joueur ne passe plus tout seul quand son jet ne permet aucun
coup : le domaine le dit (cannotMove) et le joueur laisse passer son tour
(skipTurn, bouton « Continuer »). Les dés d'un jet sans coup, du joueur
comme de l'ordinateur, restent affichés barrés avec un message jusqu'à
l'action suivante. Scénario « Aucun coup possible avec votre jet ».
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ce dont l'interface a besoin, sans règle réimplémentée : le plateau vu de
chaque camp, les demi-coups que le moteur accepte à la suite de ceux déjà
saisis, le droit de doubler selon le moteur, et la reprise d'une partie
depuis son journal enregistré. Les types du navigateur sont ajoutés à
l'application ; le domaine reste vérifié sans eux.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
app/src/domain/game/ : une partie libre contre l'ordinateur, enregistrée
comme un arbre d'événements immuables et versionnés (GameStarted,
DiceRolled, MovePlayed, CubeOffered, CubeTaken, CubeDropped, GameEnded) ;
l'état se recalcule en les rejouant, annuler repart du parent, une action
après un retour ouvre une branche. Dés injectés. Le joueur saisit son coup
demi-coup par demi-coup ; l'ordinateur joue et décide du videau à 2 plis.
Toutes les règles viennent du moteur, derrière l'interface Engine que le
domaine définit.
app/src/engine/wasm-engine.ts : l'adaptateur Engine sur les commandes
d'engine-cli du moteur WebAssembly.
Tests : unitaires avec un faux moteur, et deux parties complètes jusqu'à
GameEnded sur le vrai moteur, avec des dés imposés.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>