/// <summary> /// Rempli le mot spécifié /// </summary> /// <param name="mot"></param> /// <param name="bd"></param> /// <param name="nbEssaisMaxPourMot"></param> /// <param name="afficher"></param> public void RemplirMot(Mot mot, Bd bd, int nbEssaisMaxPourMot, bool afficher) { listeMotsPossibles = bd.ListeMotsPossibles(mot.Contenu); for (int j = 0, nbMotsPossibles = listeMotsPossibles.Count; j < nbEssaisMaxPourMot && j < nbMotsPossibles; j++) { int rnd = Random.Range(0, nbMotsPossibles - 1); mot.EnregistrerMot(listeMotsPossibles[rnd], bd); if (mot.ExistentMotsTransversaux(bd)) { //Debug.Log("Ai écris " + mot.Contenu); mot.MarquerCommeRempli(listeMotsPossibles[rnd], bd, true); if (afficher) { mot.AfficherMot(); } break; } else { //Debug.Log("Ai tenté d'écrire " + mot.Contenu + " mais pas de mots transversaux existants"); mot.EffacerMot(bd); listeMotsPossibles.RemoveAt(rnd); nbMotsPossibles--; } } }
/// <summary> /// Retourne vrai si le programme réussi a remplir le mot spécifié en utilisant les scores des mots du dictionnaire /// </summary> /// <param name="mot"></param> /// <param name="bd"></param> /// <param name="nbEssaisMaxPourMot"></param> /// <param name="afficher"></param> public void RemplirMotSelonScore(Mot mot, Bd bd, int nbEssaisMaxPourMot, bool afficher) { listeMotsPossibles = bd.ListeMotsPossiblesTriesParScore(mot.Contenu); for (int j = 0, nbMotsPossibles = listeMotsPossibles.Count; j < nbEssaisMaxPourMot && j < nbMotsPossibles; j++) { int nbEchange = 0; while (mot.ContenusPrecedents.Contains(listeMotsPossibles[j].contenu) && nbEchange < nbMotsPossibles) { //Debug.Log("Switch sur " + listeMotsPossibles[j].contenu); MotDico motPossible = listeMotsPossibles[j]; listeMotsPossibles.RemoveAt(j); listeMotsPossibles.Add(motPossible); nbEchange++; } if (nbEchange >= nbMotsPossibles) { //Debug.Log("Clear"); mot.ContenusPrecedents.Clear(); } mot.EnregistrerMot(listeMotsPossibles[j], bd); if (mot.ExistentMotsTransversaux(bd)) { //Debug.Log("Ai écris " + mot.Contenu); mot.MarquerCommeRempli(listeMotsPossibles[j], bd, true); if (afficher) { mot.AfficherMot(); } break; } else { //Debug.Log("Ai tenté d'écrire " + mot.Contenu + " mais pas de mots transversaux existants"); mot.EffacerMot(bd); } } }