Portail d'enseignement

E Suong
E Suong

Explorer les ressources

Accueil

Documentation technique

Mini Shogi

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

État public de référence au 29 octobre 2026 : 3acbb8d, neuf jeux de stratégie publiés, dont Shogi et Mini Shogi. Les bilans de tests datés à sept ou huit jeux restent historiques. La phase 1 comptes/barème n’est pas déclarée publiée par cette fiche ; les fonctions élèves/classes et nouveaux jeux restent bêta.

État du 27 octobre 2026 : implémenté sur feature/mini-shogi, depuis origin/main e093f69, dans le worktree portail-mini-shogi. État historique de préparation, remplacé par la publication de Mini Shogi dans 3acbb8d. Le Shogi 9 × 9 reste publié séparément. Route : /rubriques/jeux-mini-shogi, catégorie jeux-strategie, carte « Mini Shogi ».

Règles et choix

Référence : portail universitaire 5五将棋 / UEC, consulté le 27 octobre 2026 ; corroboration Lishogi. Certaines variantes décrites ailleurs diffèrent sur les répétitions ; le jeu suit ici la règle UEC.

  • Plateau fixe 5 × 5 ; six pièces par camp : roi, or, argent, fou, tour et pion. Pas de cavalier ni de lance.
  • Vu du joueur : rangée arrière roi/or/argent/fou/tour de gauche à droite ; pion devant le roi. Position adverse tournée de 180°. Sente (joueur 1, index 0) commence.
  • Déplacements identiques au Shogi. Capture : la pièce rejoint la réserve du capturant sans sa promotion. Un tour est un déplacement ou un parachutage.
  • Zone de promotion : dernière rangée uniquement, départ ou arrivée dans cette rangée. Roi/or ne se promeuvent pas ; argent/pion deviennent or, tour/fou gagnent les pas du roi complémentaires. Pion obligatoirement promu à l’arrivée sur la dernière rangée. Un parachutage ne promeut pas.
  • Parachutage sur case vide, pièce présente en réserve ; pion interdit sur la dernière rangée, dans une colonne contenant déjà un pion non promu du même camp, ou s’il donne mat immédiatement. Un échec de pion non mat est autorisé ; un pion déplacé ou une autre pièce parachutée peut mater.
  • Roi protégé : aucun coup n’expose son propre roi, aucun roi capturé. Absence de coup légal = défaite, même sans échec. Abandon confirmé possible à son tour.
  • Quatrième occurrence du même plateau/promotions, des mêmes réserves et du même joueur au trait : défaite de Sente. Si un camp a donné échec à chacun de ses coups dans le cycle, c’est ce camp qui perd en priorité. La position initiale compte. En revanche distante, Sente peut être l’invité : l’index de camp, pas le rôle d’hôte, décide du résultat.
  • Pas de déclaration d’entrée du roi, de calcul 24/31 points ni de limite automatique à 500 coups héritée du grand Shogi. Pas de pendule, IA, handicap, mode débutant ni accord d’impasse. Les limites techniques de durée du salon restent communes aux jeux.

Adaptations pédagogiques : les coups illégaux sont bloqués ; annulation possible. En local, nouvelle partie repart avec le joueur 1. À distance, les personnes alternent le premier coup à chaque revanche acceptée.

Interface

Pièces monochromes sur bois, cinq réserves par camp, plateau plus compact que le grand Shogi. Trois affichages : caractères japonais, lettres françaises, caractères avec lettre en coin. Lettres : R roi, T tour, F fou, O or, A argent, P pion ; + pour promotion. Légende et règles visibles en permanence, options puis salon déplié en bas.

Déplacements légaux affichés à la sélection par défaut ; aide désactivable, comprenant coups des pièces clouées et restrictions de parachutage. Clic sur pièce puis destination valide le coup ; promotion facultative demande Promouvoir ou Conserver, promotion forcée automatique. Capture et promotion font un seul coup annulable. Annuler une sélection non envoyée ne demande aucun accord ; annuler un coup distant exige le consentement adverse. Dernier déplacement doré et roi en échec encadré.

Deux profils locaux, appliqués au tour du joueur concerné. À distance, profil personnel par onglet, indépendant de l’autre joueur, modifiable en cours de partie et conservé lors d’une revanche. Le camp connecté est en bas ; les coordonnées internes ne tournent pas. Tab entre sur le plateau, les flèches parcourent les 25 cases sans passer d’une rangée à l’autre horizontalement ; Entrée/Espace sélectionne/joue. Réserves et promotion accessibles avec Tab.

Architecture et protocole

  • src/lib/shogi-core.mjs : géométrie, mouvements, sécurité des rois, captures, promotions, parachutages et répétitions communs. Fabrique createShogiEngine, paramètres fixes choisis par le code ; jamais par une commande utilisateur.
  • src/lib/shogi.mjs : façade 9 × 9, API et règles historiques conservées.
  • src/lib/mini-shogi.mjs : façade 5 × 5 : initialMiniShogi, legalMiniShogiMoves, playMiniShogi, inCheck, positionKey, HAND_TYPES. miniShogiEngine expose aussi enteringKing, toujours inéligible.
  • src/components/ShogiBoard.svelte : rendu partagé, variant fixé au montage. Shogi.svelte et MiniShogi.svelte sont les deux points d’entrée indépendants. Pour changer de variante, remonter le composant ; pas d’option de taille pendant la partie.
  • Route commune src/pages/rubriques/[id].astro, catalogue et droits habituels. Définition distante mini-shogi → jeux-mini-shogi, réglages {}, monochrome:true ; adaptateur serveur utilise le même moteur pur.

État : board[25], null ou {type,owner,promoted}, indice = ligne × 5 + colonne, origine en haut à gauche. Camp 0 avance vers ligne 0, camp 1 vers ligne 4. hands[2] contient R/B/G/S/P (types internes, distincts des lettres françaises). Champs player,moves,last,over,winner,reason,records analogues au Shogi. records mémorise signatures, auteur et échec ; l’annulation restaure également les répétitions. Transitions immuables.

Commandes, avec révision et clé de place selon le service commun :

{op:'play',action:{type:'move',from:15,to:10,promote:false}}
{op:'play',action:{type:'drop',piece:'B',to:12}}
{op:'play',action:{type:'resign'}}

declare est refusé, tout comme les pièces N/L/K dans les réserves et les indices hors 0–24. Les préférences n’entrent jamais dans les réglages du salon. Les invitations Mini Shogi et Shogi sont incompatibles. Le serveur fait autorité, déduit le camp à partir de la place et gère annulation, reconnexion, fin et revanche. Aucun nouveau secret, endpoint ou paramètre .env. Plafond commun aux neuf jeux dans cette branche.

Stockage et limites

  • localStorage['mini-shogi-preferences-v1'] : {profiles:[{mode,hints},{mode,hints}]}.
  • sessionStorage['mini-shogi-personal-v1'] : {mode,hints}, propre à l’onglet distant.
  • sessionStorage['mini-shogi-online-seat-v1'] : place distante, même contrat et protection que les autres jeux.
  • Valeurs de préférences validées ; refus du stockage signalé, sans bloquer le jeu. Aucune collision avec les clés du grand Shogi.
  • Partie locale non sauvegardée ; rechargement conserve seulement les préférences. En salon, le rechargement restaure la place tant qu’elle existe ; fermeture de l’onglet ou redémarrage serveur peut perdre la partie. Aucune persistance de plateau ni IA. Historique en mémoire ; pas de validation de charge ou de parties exceptionnellement longues.

Pour une future IA : utiliser le moteur pur dans un Worker annulable ; inclure réserves, promotions, trait et répétitions dans l’évaluation. Sente perd la répétition ordinaire, ce n’est pas un score nul. Ne pas changer le contrat du salon ni inclure de calcul lourd dans le processus serveur partagé.

Catalogue, livraison et retour arrière

Migration ciblée :

node scripts/migrate-mini-shogi.mjs
node scripts/migrate-mini-shogi.mjs --apply
npm run catalogue:refresh

Simulation par défaut. Recherche de la catégorie unique jeux-strategie, même renommée. Création exclusive de <catégorie>/Mini Shogi/_rubrique.json, id jeux-mini-shogi, titre Mini Shogi, type page, ordre 90, minLevel 0 soumis aux droits hérités. Aucun parent ni contenu existant réécrit. Relance conserve tous les champs d’une rubrique compatible, même personnalisée. Refus des doublons, liens symboliques, mauvais parent/type et dossier cible occupé sans la bonne fiche. La migration n’actualise pas le catalogue automatiquement : auditer les fichiers non déclarés avant refresh.

Production non modifiée par ce chantier. Avant publication autorisée : sauvegarde des données du VPS, comparaison du code courant, compilation isolée, simulation/application de cette seule migration, refresh Linux, activation du code choisi. Ne jamais transférer Ressources, contenus, .env, .security, catalogue synthétique ou secrets locaux. Le refactoring du moteur et du rendu impose une recette du Shogi 9 × 9 également. Redémarrer Node ferme tous les salons.

Retour arrière : restaurer l’ensemble cohérent des sources et du dist précédents ; le Shogi classique doit retrouver sa version précédente avec son moteur et composant. Masquer la nouvelle rubrique si nécessaire via l’administration ; préserver ses éventuels contenus récents. Ne pas restaurer globalement une ancienne sauvegarde de données. Les préférences Mini Shogi peuvent rester sans affecter les autres jeux.

Démonstration et validation

Worktree neuf uniquement : npm ci, puis node scripts/setup-shogi-demo.mjs (désormais les neuf jeux synthétiques, aucune ressource réelle). Le script refuse tout dossier Ressources préexistant. Dossier .work créé pour les tests. Serveur local de ce chantier : http://127.0.0.1:4327/rubriques/jeux-mini-shogi.

Tests : tests/mini-shogi.test.mjs (13), tests/mini-shogi-migration.test.mjs (2), deux parties complètes distantes via online-games.test.mjs, et test HTTP/SSE commun étendu. Les 15 tests du grand Shogi restent exécutés après extraction du moteur partagé. Bilan du chantier : 236 tests réussis, compilation réussie. Les contrôles couvrent les règles spécifiques, immutabilité/conservation, migrations, droits, annulation terminale et alternance des places. Les vérifications navigateur et réseau sont consignées dans la livraison (../LIVRAISON_MINI_SHOGI.md).

Ajustement visuel (branche Mini Shogi, non publié) : caractères et lettres des pièces promues en rouge foncé, y compris la lettre en coin. Capture puis parachutage rétablissent le texte normal puisque la promotion est perdue. Le choix facultatif Promouvoir/Conserver apparaît dans une fenêtre superposée au plateau (deux variantes), avec Annuler et Échap ; focus placé dans la fenêtre puis rendu à la case. Les options hors plateau restent accessibles, la fenêtre n’est pas une modale bloquant toute la page.

← Retour à la documentation