Portail d'enseignement

E Suong
E Suong

Explorer les ressources

Accueil

Documentation technique

Moulin

Fiche de référence du code : fonctionnement, formats et limites. La disponibilité publique dépend de la version publiée.

Sommaire de la fiche

Modes actuels : deux joueurs locaux ou 1v1 à distance. Les descriptions d’annulation immédiate, de confirmation locale et de stockage dans le composant ci-dessous concernent le mode local. Le mode distant utilise un serveur et l’accord de l’adversaire ; voir la section dédiée en fin de fiche et le guide de déploiement (../DEPLOIEMENT_JEUX.md).

Fiche comparée aux sources, à l’interface et au catalogue le 26 octobre 2026. Voir l’audit commun des neuf activités (../JEUX.md#validation-documentaire). Les comptes de tests et recettes navigateur datés plus bas sont des vérifications historiques, pas un état de validation global actuel.

Accès, règles et interface

Rubrique publique jeux-moulin, route /rubriques/jeux-moulin, dossier Ressources/Jeux/Jeux de strategie/Jeu du moulin. Carte et menu après Reversi dans les Jeux de stratégie. Jeu à deux en local, neuf pions chacun, bleu #2365a0 puis rouge #ae4433, 24 points et trois carrés reliés par le milieu des côtés. Aucun lien diagonal ni passage par le centre.

Pose alternée jusqu’à épuisement des deux réserves, puis déplacement vers un voisin libre. Une fois la pose terminée, un camp réduit à trois pions peut voler vers tout point libre. Chaque nouveau moulin permet une seule capture, y compris deux moulins simultanés. Les pions adverses dans des moulins sont protégés tant qu’il reste un pion adverse hors moulin. Un moulin ouvert puis reformé donne une nouvelle prise ; un moulin resté intact n’en donne pas. Défaite à moins de trois pions réserve comprise ou blocage au début d’un tour de déplacement.

Nul à la troisième occurrence du même plateau, réserves et joueur à jouer, ou à la limite configurable. Défaut : 100 tours individuels au total (environ 50 par joueur), pose comprise, plage 1–500. Choix pratique pour ce site, pas une limite universelle ni une règle de 50 coups sans capture. Un tour comprend la pose/déplacement ET la capture éventuelle. Victoire prioritaire sur la limite. Réglage sous les règles, modifiable avant de jouer ou lors de la confirmation d’une nouvelle partie. Annuler cette confirmation conserve la partie et sa limite.

Validation immédiate au clic : poser, ou sélectionner un pion puis sa destination. Recliquer son pion désélectionne ; un autre pion ami change la sélection. Les destinations sont vert pâle, les captures possibles entourées de doré. Le dernier pion posé/déplacé est encadré. Bouton Annuler : retire d’abord une sélection seule ; sinon restaure le début du tour, y compris lors d’une capture en attente ou après la fin. Une capture n’ajoute pas une deuxième entrée à l’historique. Sous chaque joueur, affichage individuel : « Phase de pose (N jetons restants) » tant que sa réserve est non vide, puis « Phase de mouvement » ou « Phase de saut » avec trois jetons ou moins. Le singulier est utilisé pour un jeton restant. Ce libellé ne change pas les règles : les déplacements attendent la fin de pose des deux joueurs et deux jetons restants entraînent la défaite.

Un arrêt Tab sur le plateau, flèches vers un point dans la direction visuelle (nextPoint pondère distance avant et écart latéral ; la navigation n’exige pas une arête du plateau et reste indépendante des déplacements autorisés), Entrée/Espace pour agir. Points invalides focusables mais non jouables. Plateau défilant sur petit écran. Pas de glisser ni de compte. En mode local, aucun envoi de coups ni stockage persistant ; recharger recommence à 100 tours.

Sources et variantes : https://www.nine-mens-morris.net/manual.html et https://raft.net/wp-content/uploads/2019/03/244-Nine-Mens-Morris.pdf. Le vol, la protection et les prises multiples varient selon les éditions ; les choix ci-dessus sont explicités dans les règles visibles.

Moteur

src/lib/morris.mjs : POINTS (coordonnées en pourcentage), LINKS (32 arêtes), MILLS (16 triplets), DEFAULT_MORRIS_TURNS=100, initialMorris(maxTurns), pieceCount, placing, inMill, removable, destinations, legalActions, actMorris, nextPoint. Composant src/components/Morris.svelte.

Numérotation interne : carré extérieur 0–7, intermédiaire 8–15, intérieur 16–23 ; sens horaire depuis le coin haut gauche, en passant par le milieu du haut. État : board (−1 vide, 0 bleu, 1 rouge), reserve, player, turns (tours achevés), maxTurns, phase (play/capture/over), last, winner (null pour nul ou partie en cours), reason (pieces/blocked/limit/repetition), positions (comptes des positions achevées).

Actions : {type:‘place’,to}, {type:‘move’,from,to}, {type:‘capture’,at}. Transitions immuables. La phase capture garde le joueur et ne compte pas le tour ; la capture termine le tour et contrôle victoire puis nuls. legalActions énumère les captures en attente également. L’historique UI sauvegarde l’état avant une pose/un déplacement ; annuler restaure aussi le compte des répétitions et la limite.

Futur mode ordinateur (non implémenté)

Utiliser legalActions et actMorris, en traitant la capture comme une sous-action du même joueur : ne pas alterner systématiquement l’évaluation à chaque transition. Clé de recherche : plateau, réserves, joueur, phase, tours restants et contexte des répétitions. Prévoir Worker annulable, jeton de partie/requête, refus des résultats périmés après annulation/reprise, verrou des entrées pendant calcul. Définir camp, difficulté et politique d’annulation solo. Aucun niveau d’IA ni force de jeu évalué.

Validation

tests/morris.test.mjs : géométrie, poses, captures et protection, moulin double, immutabilité, déplacements, vol, moulin reformé, défaites par capture/blocage, priorité victoire sur limite, limite après capture, répétition et accessibilité de tous les points au clavier. Le tactile reste à vérifier sur appareil.

Validation du 26 octobre 2026 : 120 tests passent, compilation réussie. Navigateur : limite à 5, pose et moulin, annulation pendant capture, capture au dernier tour suivie du nul, annulation après fin, 18 poses puis déplacement, sélection/destination, annulation du déplacement, rejet de limite invalide, abandon de nouvelle partie et navigation Tab/flèche/Espace vérifiés. Victoires, vol et répétition sont couverts par les tests du moteur.

Mode distant — 27 octobre 2026

L’hôte choisit 1–500 tours (100 par défaut), avant le lancement ou une nouvelle partie acceptée. La capture obligatoire garde le même joueur et se restaure après reconnexion. Annuler revient avant la pose/le déplacement avec sa capture éventuelle et restaure les comptes de répétition. Effacer une sélection non envoyée reste local.

OnlineLobby.svelte gère création, invitation, présence et consentement ; OnlineSettings.svelte gère les options de l’hôte. L’invité ne peut pas les changer. Les API contrôlent la rubrique de ce jeu et réutilisent son moteur pur. Plateaux/historiques en mémoire serveur, clé de place dans sessionStorage (moulin-online-seat-v1). Recharger le même onglet retrouve le salon tant qu’il existe ; redémarrer le serveur le perd. Sélections préparatoires non envoyées non sauvegardées.

Annulation et nouvelle partie nécessitent l’accord adverse ; délai de demande d’une minute. Une coupure suspend le jeu et réserve la place cinq minutes par défaut. Ces délais et le plafond global sont décrits dans le contrat commun. La validation distante (tests de service, parties complètes, HTTP/SSE et scénario navigateur propre à ce jeu) est consignée dans cette fiche commune ; le tactile et l’hébergement public restent à valider. Les anciennes recettes datées ci-dessus restent un historique du mode local.

Revanche distante : le salon reste ouvert après victoire ou nul, jusqu’au départ ou à son expiration. Chaque nouvelle partie acceptée alterne le premier joueur (hôte, invité, hôte…), qui reçoit le joueur 1 et le bleu au départ. Les droits de l’hôte restent inchangés. Refus, retrait, expiration de demande, annulation de coup et reconnexion ne changent pas cet ordre. Voir les champs starterRole/playerIndex, délais et vérifications dans le contrat commun.

← Retour à la documentation