Implemente le mini-jeu Mots meles (grille reelle, placement 4 directions)
Build and deploy / test-python (push) Failing after 1m0s
Build and deploy / test-js (push) Failing after 50s
Build and deploy / lint-python (push) Failing after 1m2s
Build and deploy / lint-js (push) Failing after 1m7s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Build and deploy / sonarqube (push) Failing after 1m1s
Build and deploy / test-python (push) Failing after 1m0s
Build and deploy / test-js (push) Failing after 50s
Build and deploy / lint-python (push) Failing after 1m2s
Build and deploy / lint-js (push) Failing after 1m7s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Build and deploy / sonarqube (push) Failing after 1m1s
Quatrieme mini-jeu du support de formation : le createur ecrit 5 a 10 mots (recommandation souple, comme MIN_PAIRS/MIN_CARDS), places par le serveur dans une grille carree horizontalement, verticalement, ou en diagonale (deux sens seulement, jamais a l'envers) via un vrai algorithme de placement avec retry/agrandissement de grille en cas de conflit. La grille ET la position exacte de chaque mot sont calculees cote serveur puis embarquees en JSON ; le client valide chaque selection (glisser ou cliquer-cliquer) par comparaison de coordonnees exactes, jamais une simple comparaison de texte (qui se tromperait sur des lettres partagees entre deux mots qui se croisent). Comme Association/Memory, la grille reste affichee une fois tous les mots trouves : seul le bouton Recommencer (.docMinigameRestartBar, partage) apparait. Verifie via simulation DOM reelle (jsdom) : selection au glisser ET au clic-clic, mot invalide sans crash, barre de fin qui bascule, panneau Proprietes (ajout/suppression de mot avec revalidation serveur). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
1b1307bb85
commit
d8be80ebd1
@@ -77,7 +77,28 @@ regroupement à chaque appel.
|
||||
Comme l'Association, le plateau reste affiché une fois toutes les
|
||||
paires trouvées (ou toutes les cartes révélées en mode `"single"`) :
|
||||
seul le bouton "Recommencer" (`.docMinigameRestartBar`) apparaît.
|
||||
- **Autres mini-jeux** (`mots`/`scenario`/`zones`) : carte placeholder
|
||||
portant le libellé du type (voir
|
||||
- **Mots mêlés** : toujours une carte résumant la config réelle (nombre
|
||||
de mots) — sanitizée (`sanitize_mots_config`) avant lecture. Si au
|
||||
moins un mot existe, s'y ajoute (fonction privée `_render_mots_player`)
|
||||
la grille RÉELLE et interactive. La grille ET la position exacte de
|
||||
chaque mot sont calculées ICI côté serveur (`_build_mots_grid`, jamais
|
||||
recalculées côté client) : chaque mot est placé horizontalement,
|
||||
verticalement, ou en diagonale (haut-gauche→bas-droite ou
|
||||
haut-droite→bas-gauche — jamais à l'envers), les lettres restantes
|
||||
tirées au hasard (`random.choice`/`random.randint`, tirage de jeu —
|
||||
voir `CODE_QUALITY.md`) ; si un mot ne trouve pas sa place, la grille
|
||||
entière est agrandie et le placement retenté depuis zéro, plutôt que
|
||||
d'abandonner silencieusement ce mot. Le tout (grille + coordonnées de
|
||||
chaque mot) est embarqué en JSON dans un attribut `data-mots-config`,
|
||||
échappé pour l'HTML — même principe que les autres mini-jeux, aucun
|
||||
aller-retour serveur pendant qu'on joue : `static/document/js/
|
||||
document-editor.js` compare les coordonnées EXACTES sélectionnées par
|
||||
l'apprenant à celles de chaque mot (jamais une simple comparaison de
|
||||
texte, qui se tromperait sur des lettres partagées entre deux mots qui
|
||||
se croisent). Comme l'Association/Memory, la grille reste affichée une
|
||||
fois tous les mots trouvés : seul le bouton "Recommencer"
|
||||
(`.docMinigameRestartBar`) apparaît.
|
||||
- **Autres mini-jeux** (`scenario`/`zones`) : carte placeholder portant
|
||||
le libellé du type (voir
|
||||
`document_engine/labels/element_kind_labels.py`) — emplacement réservé,
|
||||
formulaire de contenu dédié hors périmètre de cette passe.
|
||||
|
||||
Reference in New Issue
Block a user