Un mot, cinq lettres, six essais
Motus reprend une mécanique devenue universelle : je choisis un mot français de cinq lettres, vous en proposez d'autres, et chaque essai validé se colore pour vous rapprocher de la solution. Une lettre bien placée passe en ambre, une lettre présente dans le mot mais mal positionnée en indigo, une lettre absente en gris sombre. Six essais pour tomber juste. Le tout tient dans un module Canvas 2D sans la moindre dépendance.
Le vrai sujet : la couleur juste, même avec des doublons
Colorer un essai paraît trivial tant qu'aucune lettre ne se répète. Le piège
surgit avec les doublons. Si le mot cible contient un seul S et que
votre essai en aligne trois, combien doivent s'allumer ? Un seul — sinon
l'indice ment sur le nombre réel d'occurrences. Une comparaison lettre à lettre
naïve échoue ici : elle signalerait « présent » chaque S, laissant
croire que le mot en compte plusieurs.
Deux passes et un décompte
Je résous ça avec un algorithme en deux passes assorti d'un comptage. Je commence par dénombrer chaque lettre du mot cible. Première passe : je repère les lettres bien placées et, pour chacune, je décrémente son compteur — cette occurrence est désormais « consommée ». Seconde passe : pour les lettres restantes, je n'accorde le statut « présente » qu'à celles dont le compteur est encore positif, en le décrémentant à chaque fois. Résultat, une lettre n'est signalée présente qu'autant de fois qu'elle apparaît réellement dans le mot — priorité donnée aux positions exactes. C'est exactement la règle des jeux de ce type, et c'est là que la plupart des implémentations rapides se trompent.
Deux claviers pour une même saisie
On joue au clavier physique — les lettres se saisissent, Entrée valide,
Retour arrière efface, Espace tire un nouveau mot — ou au
clavier virtuel dessiné à l'écran, piloté par les Pointer Events pour
fonctionner à la souris comme au doigt. Les deux alimentent la même logique de
jeu. Et parce que l'information accumulée doit rester lisible, chaque touche du
clavier virtuel se colore selon le meilleur statut connu pour sa lettre : une
fois qu'un R est confirmé bien placé, sa touche reste ambre.
Ce que ça dit de ma manière de travailler
Une petite règle métier — « ne compter une lettre présente qu'autant de fois qu'elle existe » — semble anecdotique, mais c'est précisément le genre de détail qui, mal traité, produit un logiciel qui semble marcher puis induit l'utilisateur en erreur sur un cas limite. Je conçois les vôtres avec la même exigence : identifier tôt les cas particuliers, les traiter par un algorithme clair et testable plutôt que par une rustine, et livrer un comportement correct partout — pas seulement sur l'exemple de démonstration.