Ejemplo n.º 1
0
    /// <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");
        }
    }
Ejemplo n.º 2
0
 /// <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();
     }
 }