/// <summary> /// Enregistre une valeur dans le mot courant (mais ne le marque pas immédiatement comme rempli) /// </summary> /// <param name="motDico"></param> /// <param name="bd"></param> public void EnregistrerMot(MotDico motDico, Bd bd) { for (int i = 0; i < this.taille; i++) { listeLettres[i].EnregistrerLettre(motDico.contenu.Substring(i, 1).ToUpper()); } }
/// <summary> /// Marque le mot courant comme rempli /// </summary> /// <param name="motDico"></param> /// <param name="bd"></param> public void MarquerCommeRempli(MotDico motDico, Bd bd, bool verifierTransversaux) { if (rempli) { if (Contenu.Contains(".")) { rempli = false; bd.MarquerMotUtilise(this.motDico, false); this.motDico = null; } } else { if (!Contenu.Contains(".")) { rempli = true; this.motDico = motDico; bd.MarquerMotUtilise(motDico, true); } } if (verifierTransversaux) { foreach (Lettre lettre in listeLettres) { lettre.MarquerMotRempliDansDirection(!horizontal, bd); } } }
/// <summary> /// Retourne les définitions du mot courant /// </summary> /// <param name="bd"></param> /// <returns></returns> public string[] ObtenirDefinitions(Bd bd) { MotDico motDef = bd.RechercherMotParContenuPourDefinitions(this.Contenu); if (motDef != null && motDef.definitions.Length > 0) { return(motDef.definitions); } else { //Debug.Log("Le mot " + this.Contenu + " n'a pas été trouvé dans le dictionnaire de définitions."); return(new string[] { "Définition indéterminée" }); } }
/// <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); } } }
/// <summary> /// Ajoute un dictionnaire à laliste des dictionnaires /// </summary> /// <param name="textAsset"></param> private void AjouterDico(TextAsset textAsset) { List <string> strList = textAsset.text.Split(new string[] { "\r\n", "\n" }, System.StringSplitOptions.RemoveEmptyEntries).ToList(); List <MotDico> lmd = new List <MotDico>(); foreach (string str in strList) { MotDico motDico = new MotDico(); if (str.Contains(";")) { List <string> defList = str.Split(new string[] { ";" }, System.StringSplitOptions.RemoveEmptyEntries).ToList(); motDico.contenu = defList[0]; defList.RemoveAt(0); motDico.definitions = defList.ToArray(); } else { motDico.contenu = str; } motDico.longueur = motDico.contenu.Length; lmd.Add(motDico); } listeDicos.Add(lmd); }
/// <summary> /// Marque un mot comme utilisé /// </summary> /// <param name="motDico"></param> /// <param name="utilise"></param> public void MarquerMotUtilise(MotDico motDico, bool utilise) { listeDicos[motDico.longueur].Find(o => o == motDico).utilise = utilise; }