Coup de l'ordinateur montré, aucun coup possible, dés et videau touchables #19

Merged
pierre merged 8 commits from coup-adverse into main 2026-11-03 04:06:50 +00:00
Showing only changes of commit a08c997ac1 - Show all commits
+48 -9
View File
@@ -165,17 +165,56 @@ identique (« revoir »).
les mêmes traces reviennent ; une capture `coup-adverse` est prise. La
seconde fois, en mouvement réduit, aucune animation ne tourne et les traces
reviennent.
- Résultats : `make lint` sans problème ; `make test` 10/10 ; `make
test-browser` vert sous Chromium (coup de l'ordinateur montré 26 fois) et
Firefox (43 fois), sans violation CSP ni erreur dans la page.
**Ajout : aucun coup possible** :
- Domaine : `Game.roll()` ne fait plus passer le tour. `Game.cannotMove()`
dit, d'après `legalMoves` du moteur, que le jet ne permet aucun coup.
`Game.skipTurn()` enregistre alors le coup vide (même événement
`MovePlayed` sans demi-coup qu'avant, format inchangé) ; il est refusé s'il
existe un coup. Le nom `skipTurn` évite la confusion avec « passer » (le
double), qui est `drop` dans le glossaire.
- Interface : bouton « Continuer » (`#skip`), message « Aucun coup possible
avec 6-5. », consigne « Touchez « Continuer » : le tour passe à
l'ordinateur. », dés estompés et barrés (`.die-blocked`, `.die-strike`).
Quand l'ordinateur ne peut pas jouer, ses dés restent barrés avec « L'ordinateur
ne peut pas jouer 5-5. » jusqu'à l'action suivante. Ces deux messages se
déduisent du journal : ils survivent à un rechargement.
- Tests : scénario « Aucun coup possible avec votre jet » (pion sur la barre
face aux six cases tenues, 6-5), tests unitaires `cannotMove`/`skipTurn`
(faux moteur), partie complète adaptée. Dans le navigateur, « Continuer »
a été demandé 1 fois (Chromium) et 3 fois (Firefox) : message et deux dés
barrés vérifiés à chaque fois. Le jet sans coup de l'ordinateur est vérifié
quand il survient (pas survenu dans ces deux parties).
**Ajout : toucher les dés et le videau** :
- Quand vous pouvez lancer, deux dés « en attente » (faces vides, contour en
pointillés) apparaissent au milieu de la moitié gauche. La moitié droite
garde le dernier jet de l'ordinateur, qui doit rester visible. Quand vous
pouvez doubler (`Game.canDouble()`, comme le bouton), le videau est souligné.
- Les toucher clique le bouton correspondant (`#roll`, `#double`) : mêmes
conditions, même effet. Hors de ces moments, aucune zone n'est posée.
- Zones à toucher : `role="button"`, `aria-label` (« Lancer les dés »,
« Doubler »), au moins 88 unités, soit 47 px sur le plateau de 344 px d'un
téléphone de 360 px. Les boutons restent pour le clavier ; les zones n'ont
pas de `tabindex`, pour ne pas doubler l'ordre de tabulation.
- Navigateur : dés touchés 10 fois (Chromium) et 14 fois (Firefox), videau
touché pour doubler, taille et rôle vérifiés ; aucune zone pendant la
saisie d'un coup.
**Résultats finaux** (dernier commit vérifié) : `make lint` sans problème ;
`make test` 10/10 ; `make test-browser` vert sous Chromium et Firefox, sans
violation CSP ni erreur dans la page. Le coup de l'ordinateur a été montré 21
et 30 fois. Dans Firefox, un coup revu a frappé deux pions, tous deux signalés sur la
barre.
**Limites** :
- Aucune des deux parties du navigateur n'a vu l'ordinateur frapper (0 pion
frappé signalé). L'animation vers la barre n'est donc vérifiée que par le
scénario et les tests unitaires (plateaux et traces), pas dans un
navigateur.
- Firefox a affiché un tour de l'ordinateur à 4,4 s au plus. Ce temps est
mesuré avant l'animation, qui n'y est pour rien : c'est le moteur sous
- Un premier essai de `make test-browser` a échoué dans `docker build`
(« parent snapshot … does not exist »), sans lien avec le code
(probablement une autre construction Docker en parallèle). L'essai suivant
est passé.
- Firefox affiche des tours de l'ordinateur de 3 à 4,4 s au plus. Ce temps
est mesuré avant l'animation, qui n'y est pour rien : c'est le moteur sous
Firefox sur le PC de 2011. Chromium : 0,6 s au plus.
- Les dés en attente sont à gauche alors que le jet lancé s'affiche à
droite : c'est un choix d'interface, à revoir avec la charte si besoin.
- Sur une case de plus de cinq pions, c'est le cinquième pion dessiné qui
glisse (le nombre reste affiché sur la pile).