/// <summary> /// Remplir la grille /// </summary> /// <param name="bd"></param> /// <param name="listeMots"></param> /// <param name="nbEssaisMaxGlobal"></param> /// <param name="nbEssaisMaxPourMot"></param> /// <param name="afficher"></param> public void RemplirGrille(Bd bd, Grille grille, int nbEssaisMaxGlobal, int nbEssaisMaxPourMot, bool afficher) { int nbEssaisGlobal = 0; bool trier = false; CalculerScoresDesMots(grille.listeMotsARemplir); Mot motARemplir = ObtenirProchainMotARemplir(grille, true); while (motARemplir != null && nbEssaisGlobal < nbEssaisMaxGlobal) { //Debug.Log((motARemplir.Horizontal ? "Horizontal " : "Vertical ") + motARemplir.PositionPrimaire + ":" + motARemplir.PositionSecondaire); if (motARemplir.nbTentativesDeRemplissage == 10) { RetirerMotAleatoire(grille, motARemplir, bd, afficher); RetirerMotAleatoire(grille, motARemplir, bd, afficher); } else if (motARemplir.nbTentativesDeRemplissage == 20) { RetirerMotAleatoire(grille, motARemplir, bd, afficher); RetirerMotAleatoire(grille, motARemplir, bd, afficher); } else if (motARemplir.nbTentativesDeRemplissage == 30) { RetirerMotAleatoire(grille, motARemplir, bd, afficher); RetirerMotAleatoire(grille, motARemplir, bd, afficher); } else if (motARemplir.nbTentativesDeRemplissage == 40) { RetirerMotsTransversaux(grille, motARemplir, bd, afficher); motARemplir.nbTentativesDeRemplissage = 0; } //RemplirMotSelonScore(motARemplir, bd, nbEssaisMaxPourMot, afficher); RemplirMot(motARemplir, bd, nbEssaisMaxPourMot, afficher); motARemplir.nbTentativesDeRemplissage++; if (!motARemplir.Rempli) { RetirerMotAleatoire(grille, motARemplir, bd, afficher); } else { motARemplir.CalculerScoreDesMotsTransversaux(); grille.listeMotsARemplir.Remove(motARemplir); trier = true; } nbEssaisGlobal++; motARemplir = ObtenirProchainMotARemplir(grille, trier); } if (nbEssaisGlobal == 0) { Debug.Log("Grille déjà remplie"); } }
/// <summary> /// Retire un mot spécifié de la grille /// </summary> /// <param name="motARetirer"></param> /// <param name="grille"></param> /// <param name="bd"></param> /// <param name="afficher"></param> public void RetirerMot(Mot motARetirer, Grille grille, Bd bd, bool afficher) { if (motARetirer != null) { motARetirer.EffacerMot(bd); if (afficher) { motARetirer.AfficherMot(); } grille.listeMotsARemplir.Add(motARetirer); motARetirer.CalculerScore(); motARetirer.CalculerScoreDesMotsTransversaux(); } }