# Échecs Cyclonium 1.0

16 octobre 2026 · Pour Vincent Lesbros.

## Jouer et expérimenter

Cliquer une pièce, puis une destination marquée. Les promotions proposent dame, tour, fou ou cavalier. Deux personnes peuvent jouer sur le même écran, ou confier l'un ou les deux camps au programme. « Jouer un coup » fait avancer le programme d'un seul coup et le laisse en pause. Examiner une proposition met aussi en pause. Revenir dans l'historique conserve la suite tant qu'un autre coup n'est pas joué.

L'éditeur permet de poser ou retirer les pièces, choisir le trait, et introduire le Monstre. Les positions composées perdent leurs anciens droits de roque et de prise en passant ; une FEN peut les spécifier explicitement. Un roi par camp est nécessaire. La validité historique complète n'est pas certifiée.

Le JSON sauvegarde FEN initiale, suite des coups, point de lecture, paramètres, orientation, mode et état du générateur pseudo-aléatoire. Au rechargement, les coups sont rejoués et contrôlés avant remplacement de l'état courant ; la partie revient en pause. La sauvegarde du navigateur est une commodité, l'export JSON est le document à conserver. La photo est un SVG (image vectorielle), sans dépendance distante.

## Filiation avec Sonographe

Lecture directe des fichiers Echecs/VLRCoup.cs, VLRCritere.cs, FormEchecs.cs et repérage des formulaires de critères/évaluations/historique de l'archive Sources Sonographe VAIO.zip. Le présent moteur est une réécriture JavaScript, pas une exécution du C# compilé.

- VLREchiquier → état explicite du plateau, simulations sans mutation, historique.
- VLRCoup et spécialisations → coups, roques, prise en passant, promotions.
- VLRMonster → M/m : un pas dans les huit directions OU un saut de cavalier ; cette pièce n'est pas un roi.
- VLRCritere → quatre familles : menaces adverses (négatives), menaces créées, bilan des prises, différence des possibilités géométriques.
- FormChoix / FormEvaluations / FormCriteres → liste consultable des coups et contributions pondérées.
- Mode positionLibre → éditeur avec validation avant le jeu.

Les valeurs historiques sont divisées par 50 000 : pion 1, cavalier 3,4, fou 3,5, tour 5, dame 10, roi 20, Monstre 6. Le bilan des prises est relatif à la position initiale de l'atelier, pas un jugement de l'avantage matériel absolu d'une position importée. Les menaces comptent les possibilités de capture, donc une cible peut compter plusieurs fois. Les déplacements géométriques peuvent inclure des pièces clouées : c'est distinct de la liste des coups réellement jouables.

Profil Sonographe : coefficients 10, 1, 1, 2 (mobilité renormalisée avec les valeurs des pièces). Profil Équilibré proposé : 1, 1, 1, 0,15. Les poids sont réellement éditables, contrairement à certains coefficients réassignés à chaque calcul dans le C# ancien. L'évaluation porte sur une position après un coup, sans recherche minimax profonde. Le mat prime les critères ; le pat vaut zéro.

Différences assumées : tirage entre les meilleures égalités seulement, sans la fenêtre de 90 % ni le mécanisme historique d'élargissement en cas de cycle ; prise en compte distincte des attaques du roi ; filtres de légalité réécrits ; pas d'interface MIDI ni de sonification ajoutée. Les nouvelles fonctions portent des noms et commentaires en français ; les API web et les codes FEN restent standards.

## Règles et conventions

Le moteur prend en charge les mouvements ordinaires, l'échec, le mat, le pat, les roques, la prise en passant et les quatre promotions. Il détecte des cas certains de matériel insuffisant, mais ne constitue pas un arbitre général de toutes les positions mortes, notamment avec les Monstres. Trois répétitions ou 100 demi-coups sans prise ni mouvement de pion terminent automatiquement la partie : convention pédagogique de cet atelier, sans réclamation de tournoi. Pas de pendule. La notation du journal est française, descriptive (cases de départ et d'arrivée), et n'est pas un export PGN/SAN standard.

Les curseurs affinent le mouvement horizontal selon la distance verticale : gain = 1/(1 + distance/35 px). La touche Maj divise encore ce gain par dix. Les champs numériques et le clavier restent disponibles.

## Contrôles effectués

`node tests.cjs` : départ 20 / 400 / 8 902 / 197 281 feuilles aux profondeurs 1 à 4 ; position avec roques « Kiwipete » 48 / 2 039 / 97 862 ; finale de contrôle 2 812 à profondeur 3 ; roques, en passant cloué, promotions, mat, pat, répétition, Monstre, isolation des états et somme des critères.

`node tests-interface.cjs` : parcours dans un DOM simulé, sélection et déplacement, rechargement JSON atomique, historique, coup unique, composition invalide, promotion, export SVG et finesse du curseur.

Le contrôle de navigateur n'était pas disponible. Le rendu réel, les gestes sur mobile, les polices des pièces et l'ouverture du fichier autonome doivent donc encore être éprouvés sur les appareils visés. Aucun EXE ou DLL ancien exécuté.

## Gaiv : complément de l'archive historique

Gaiv.zip contient 10 fichiers (et 4 entrées de dossiers). Il fournit Microsoft.DirectX.dll et Microsoft.DirectX.Direct3D.dll, datés du 2 octobre 2003. Le Sonographe.exe présent porte un horodatage du 8 septembre 2015. Garbe.Sound, MidiToolKit, les ressources localisées et les interopérabilités Windows Media Player sont également présents.

Sept des neuf assemblies Managed DirectX référencées restent absentes, dont Microsoft.DirectX.DirectSound.dll. Ce complément ne suffit donc pas à résoudre l'erreur DirectSound décrite en 2015. Les dates 2026 des entrées de dossiers correspondent à l'assemblage récent ; elles ne datent pas les binaires. L'inventaire Gaiv joint donne tailles, dates et empreintes sans charger les DLL.

La nouvelle page n'a besoin d'aucune de ces dépendances. Le ZIP Gaiv et les anciens binaires ne sont pas incorporés au site. La source historique reçue reste inchangée.

## Fichiers

- dist/moteur.js : règles, états, critères, sérialisation FEN, sans DOM.
- dist/atelier.js : interactions, historique, réglages et documents.
- dist/interface.css et dist/index.html : interface responsive.
- dist/echecsCyclonium.1.html : page autonome lisible, sans minification.
- construire.py : assemblage de la page et du ZIP de sources.
- tests.cjs, tests-interface.cjs : contrôles reproductibles.
