From 4e3e22b1751b38f1d652d19e1775017b41e6cd25 Mon Sep 17 00:00:00 2001 From: Axce Date: Fri, 2 Jan 2026 04:30:03 +0100 Subject: [PATCH] init --- cahier des charges.md | 167 ++++++++ index.html | 944 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1111 insertions(+) create mode 100644 cahier des charges.md create mode 100644 index.html diff --git a/cahier des charges.md b/cahier des charges.md new file mode 100644 index 0000000..93773a9 --- /dev/null +++ b/cahier des charges.md @@ -0,0 +1,167 @@ +## Objectif +Développer une **application web d’aide à la création de mots fléchés** (et non de mots croisés). Le présent document décrit de manière **non ambiguë** le comportement attendu afin de permettre à un LLM (ex. ChatGPT) de **coder l’application fidèlement**. + +--- + +## 1. Démarrage et création de grille + +- L’application propose un écran initial où l’utilisateur choisit : + - la **largeur** (nombre de colonnes) + - la **hauteur** (nombre de lignes) +- Un bouton **« Commencer »** crée une **nouvelle page / vue** contenant une grille vide conforme aux dimensions choisies. + +--- + +## 2. Grille : règles générales + +- La grille est constituée de **cases parfaitement carrées**, jointives (sans espace). +- Chaque case est de l’un des deux types suivants : + - **Case lettre** + - **Case définition** +- Les **cases définition** ont un **fond légèrement plus foncé** que les cases lettre. + +--- + +## 3. Règles initiales des cases définition + +À la création de la grille : + +- Toutes les cases situées : + - sur la **première ligne**, + - ou sur la **première colonne**, + - **et dont l’indice (ligne ou colonne) est impair** + sont automatiquement des **cases définition**. +- Les indices commencent à **1** (et non 0). + +--- + +## 4. Saisie et édition des mots + +### 4.1 Sélection et orientation + +- L’utilisateur clique sur une **case lettre** pour commencer la saisie. +- Une **orientation active** est toujours définie : + - **horizontale** ou **verticale**. +- L’orientation active est visuellement indiquée par la **mise en surbrillance** de la ligne ou colonne concernée. + +### 4.2 Changement d’orientation + +- L’orientation bascule (horizontal ⇄ vertical) si : + - l’utilisateur **clique à nouveau sur la case active**, ou + - l’utilisateur appuie sur la touche **TAB**. + +### 4.3 Saisie du texte + +- Chaque lettre tapée : + - est placée dans la case courante, + - puis le curseur avance d’une case selon l’orientation active. +- Touche **Backspace** : + - supprime la lettre courante, + - puis recule le curseur d’une case. + +### 4.4 Déplacements clavier + +- Les **flèches directionnelles** permettent de déplacer le curseur librement dans la grille sans modifier le contenu. + +--- + +## 5. Création automatique de cases définition + +- Lorsqu’un utilisateur commence à saisir un mot : + - si la **case immédiatement précédente** (selon l’orientation) est vide, + - alors cette case devient automatiquement une **case définition**. + +--- + +## 6. Gestion des cases définition + +### 6.1 Contenu + +- Une case définition peut contenir : + - **une définition horizontale**, + - **une définition verticale**, + - ou les deux simultanément. + +### 6.2 Découpage visuel + +- Si une case définition est associée à **deux mots** (horizontal + vertical) : + - elle est **visuellement divisée en deux moitiés**. + - les interactions (clic, sélection de définition) s’appliquent uniquement à la moitié cliquée. + +### 6.3 Flèches directionnelles + +- Chaque définition affichée doit être accompagnée d’une **petite flèche noire** : + - pointant vers la **première lettre du mot correspondant**, + - pouvant être **droite ou courbée** selon la direction du mot. + +--- + +## 7. Ajout et suppression de lignes / colonnes + +### 7.1 Ajout + +- Des icônes **« + »** permettent : + - d’ajouter une **colonne** (icônes à droite de la grille), + - d’ajouter une **ligne** (icônes en bas de la grille). +- Lors de l’ajout, les **règles des cases définition impaires** (voir section 3) doivent être **strictement respectées**. + +### 7.2 Suppression + +- Des icônes **« − »** permettent : + - de supprimer une colonne, + - de supprimer une ligne. +- La suppression entraîne la mise à jour correcte des indices et des types de cases. + +--- + +## 8. Dictionnaires de définitions + +### 8.1 Format + +- Les dictionnaires sont des fichiers texte contenant des lignes au format : + +``` +mot: définition +``` + +- Un même mot peut apparaître plusieurs fois avec des définitions différentes. + +### 8.2 Chargement + +- L’utilisateur fournit une **URL** pointant vers un fichier texte valide (ex. Pastebin raw). +- Le fichier peut être **très volumineux (jusqu’à plusieurs gigaoctets)** : + - l’implémentation doit donc être **économe en mémoire** et adaptée au streaming ou au traitement progressif. + +### 8.3 Règles lexicales + +- Les **mots sont comparés sans accents**. +- Les mots sont traités en **MAJUSCULES**. +- Les **définitions conservent leurs accents et leur casse d’origine**. +- Les mots contenant des **tirets** : + - sont affichés avec des **bordures en pointillés** entre les cases correspondant aux tirets. + +--- + +## 9. Sélection des définitions + +- Lorsqu’un utilisateur clique sur une **case définition** (ou une moitié de case) : + - l’application affiche la **liste des définitions compatibles** avec le mot associé. +- L’utilisateur peut sélectionner une définition : + - celle-ci est alors affichée dans la case définition correspondante. + +--- + +## 10. Changement manuel du type de case + +- Un **double-clic** sur une case bascule son type : + - **case lettre ⇄ case définition**. +- Ce changement met à jour le comportement et l’affichage de la case immédiatement. + +--- + +## 11. Contraintes générales + +- L’application est **entièrement web** (HTML/CSS/JS ou équivalent). +- Le comportement doit être **déterministe**, reproductible et sans ambiguïté. +- Toute interaction décrite ci-dessus doit être implémentée exactement telle que spécifiée. + diff --git a/index.html b/index.html new file mode 100644 index 0000000..8956e91 --- /dev/null +++ b/index.html @@ -0,0 +1,944 @@ + + + + + + Application de Mots Fléchés + + + + +
+
+

Créer une grille de mots fléchés

+
+ + +
+
+ + +
+ +
+
+ + +
+
+

Éditeur de mots fléchés

+ +
+

Charger un dictionnaire

+
+ + +
+
+ + +
+
+ +
+
+
+ + +
+
+
+
+ + + + + + + \ No newline at end of file