From e601d3b3ceb0ec02262d213e64b685e4c93e7acc Mon Sep 17 00:00:00 2001 From: JonathanMM Date: Sat, 2 Apr 2022 19:27:55 +0200 Subject: [PATCH] =?UTF-8?q?Close=20#61=20:=20Possibilit=C3=A9=20de=20direc?= =?UTF-8?q?tement=20valid=C3=A9=20si=20le=20mot=20est=20totalement=20pr?= =?UTF-8?q?=C3=A9rempli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ts/input.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ts/input.ts b/ts/input.ts index 6c0b885..b5222d7 100644 --- a/ts/input.ts +++ b/ts/input.ts @@ -167,6 +167,11 @@ export default class Input { if (this.estBloque()) return; this.bloquer(ContexteBloquage.ValidationMot); let mot = this._motSaisi; + // Cas particulier : Si le préremplissage donne un mot complet + let statutJeu = this.siPreremplissageEstReponse(); + if (statutJeu.preRempli && statutJeu.mot) { + mot = statutJeu.mot; + } let isMotValide = await this._gestionnaire.verifierMot(mot); if (isMotValide) { // Si le mot est valide, alors c'est la grille qui nous débloque @@ -174,6 +179,24 @@ export default class Input { } else this.debloquer(ContexteBloquage.ValidationMot); } + private siPreremplissageEstReponse(): { preRempli: boolean; mot?: string } { + let lettrePrerempli = new Array<{ preRempli: boolean; lettre?: string }>(); + for (let i = 0; i < this._longueurMot; i++) lettrePrerempli.push({ preRempli: false }); + + for (let resultat of this._resultats) { + for (let positionResultat in resultat) { + let lettreResultat = resultat[positionResultat]; + if (lettreResultat.statut === LettreStatut.BienPlace) lettrePrerempli[positionResultat] = { preRempli: true, lettre: lettreResultat.lettre }; + } + } + + if (lettrePrerempli.every((lettre) => lettre.preRempli)) { + return { preRempli: true, mot: lettrePrerempli.reduce((mot, lettre) => mot + lettre.lettre, "") }; + } + + return { preRempli: false }; + } + private saisirLettre(lettre: string): void { if (this.estBloque()) return; if (this._motSaisi.length >= this._longueurMot) return;