Esempio n. 1
0
        /// <summary>
        /// Cette méthode permet de former la Pioche. Normalement cette méthode est appelé en début de compilation
        /// pour crée la pioche du jeu.
        /// </summary>
        /// <returns></returns>
        public List <Lettre> LaPioche()                     //peupler la pioche
        {
            string        file1            = @"Lettre.txt"; //n'est pas dans le debug
            StreamReader  Lettres          = new StreamReader(file1);
            List <Lettre> LaNouvellePioche = new List <Lettre>();

            string[] Donnees;
            string   UneLigne;

            while ((UneLigne = Lettres.ReadLine()) != null)        //condition d'arret.
            {
                Donnees = UneLigne.Split(',');                     //données séparés par des virgules
                Lettre UneLettre = new Lettre(char.Parse("a"), 2); //c'est une variable
                UneLettre.Symbole = char.Parse(Donnees[0]);        //on l'actualise a chaque passage dans la boucle
                UneLettre.Poid    = int.Parse(Donnees[2]);
                for (int j = 0; j < int.Parse(Donnees[1]); j++)    //et on l'ajoute pour le nombre de fois ou elle est censé etre dans la pioche
                {
                    LaNouvellePioche.Add(UneLettre);
                }
            }
            Lettres.Close();
            //on ajoute deux jokers
            Lettre JOKER = new Lettre('§', 0);//mes JOKER sont un peu spéciaux. Je les remarques facilement avec '§'.

            LaNouvellePioche.Add(JOKER);
            LaNouvellePioche.Add(JOKER);
            return(LaNouvellePioche);
        }
Esempio n. 2
0
        /// <summary>
        /// Otelettre est un verificateur qui m'autorise ou non a poser un mots. Cette methode prends en parametre
        /// Le nb de jokers d'un joueur et si il en a. Elle retire les lettres correspondants au mots posé.
        /// </summary>
        /// <param name="mot"></param>
        /// <param name="ContientUnJoker"></param>
        /// <param name="NbJokers"></param>
        /// <returns></returns>
        public bool OteLettre(string mot, bool ContientUnJoker, int NbJokers, string[] Position) //enleve une lettre au joueur.
        {
            bool   result = true;
            Lettre var    = new Lettre(char.Parse("a"), 0);
            int    NombreLettresManquantes = 0;

            if (ContientUnJoker)
            {
                for (int i = 0; i < mot.Length; i++)
                {
                    var.Symbole = mot[i];
                    int index = ListeLettres.FindIndex(x => x.Symbole == mot[i]); //un peu de linq qui m'est tres utile.
                    if (index > -1)
                    {
                        ListeLettres.RemoveAt(index);
                    }
                    else
                    {
                        NombreLettresManquantes += 1;
                        int index1 = ListeLettres.FindIndex(x => x.Symbole == '§');
                        ListeLettres.RemoveAt(index1);
                    }
                    if (NombreLettresManquantes > NbJokers)
                    {
                        return(false);
                    }
                }
                return(true);
            }
            if (!ContientUnJoker)
            {
                List <Lettre> LettresEnlevees = new List <Lettre>(); //on remet les lettres si le mot nest pas valide
                for (int i = 0; i < mot.Length; i++)
                {
                    int index = ListeLettres.FindIndex(x => x.Symbole == mot[i]); //un peu de linq qui m'est tres utile.
                    if (index != -1)
                    {
                        LettresEnlevees.Add(ListeLettres[index]);
                        ListeLettres.RemoveAt(index);
                    }
                    else if (GrilleMatrice[int.Parse(Position[0]) - 1, int.Parse(Position[1]) - 1].Symbole == mot[i])
                    {
                        //La lettre n'est pas dans le plateau du joueur car elle est deja dans la grille.
                    }
                    else
                    {
                        for (int k = 0; k < LettresEnlevees.Count; k++)
                        {
                            ListeLettres.Add(LettresEnlevees[k]);
                        }
                        return(false);
                    }
                }
                return(result);
            }
            else
            {
                return(true);
            }
        }
Esempio n. 3
0
 public Joueur(string Nom) //constructeur
 {
     this.Nom           = Nom;
     Score              = 0;
     ListeLettres       = new List <Lettre>();
     ListeMotsTrouves   = new List <string>();
     this.GrilleMatrice = new Lettre[10, 10]; //on sait que la matrice est une 10,10
     //on doit instancier la mtrice. Je rempli donc la matrice d'espaces.
     //ses lettres vides seront remplacés quand on posera un mots.
     for (int i = 0; i < 10; i++)
     {
         for (int j = 0; j < 10; j++)
         {
             Lettre UneLettre = new Lettre(' ', 0);
             GrilleMatrice[i, j] = UneLettre;
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Si on veut poser un mots on passe par cette méthode qui verifie si le mots est un mots du dico
        /// si celui ci est un motscroisée valable
        /// si les lettres correpondantes au mots sont des lettre du joueur.
        /// </summary>
        /// <param name="mots"></param>
        /// <param name="Position"></param>
        /// <param name="UnMot"></param>
        /// <param name="Jeu1"></param>
        /// <param name="r"></param>
        public void PoserUnMot(string mots, string[] Position, MotsCroises UnMot, Jeu Jeu1, Random r) //a partir de l'entree mettre une lettre dans la grille.
        {
            Lettre JOKER           = new Lettre('§', 0);                                              //C'est mon joker
            bool   ContientUnJoker = false;
            string NouveauMots     = "";
            int    NbJokers        = 0;

            for (int o = 0; o < 2; o++)     //au cas ou la personne ait 2 jokers On verfie Deux fois
            {
                for (int l = 0; l < mots.Length; l++)
                {
                    if (mots[l] == '(')     //si j'utilises un joker je mets des () autour de la lettre remplacée
                    {
                        if (mots[l + 2] == ')')
                        {
                            for (int z = 0; z < mots.Length; z++) //il y a un joker
                            {
                                if (z != l && z != l + 2)         //on reforme le mots sans les ().
                                {
                                    NbJokers       += 1;
                                    ContientUnJoker = true;
                                    NouveauMots    += mots[z];
                                }
                            }
                            mots = NouveauMots;     //pour ne pas avoir les ().
                        }
                    }
                }
            }     // on verfie les Jokers
            if (ContientUnJoker)
            {
                mots = NouveauMots;
            }
            UnMot.MotsGrille.Add(mots);



            //une fonction pour verifier que le mot est bon
            bool result = OteLettre(mots, ContientUnJoker, NbJokers, Position); //3 verifications ici.

            if (UnMot.EstUnMotCroisee(mots, Position) && UnMot.EstUnMotDuDictionnaire() && result)
            {
                int poid;         //correspond au poid de la lettre en question
                int PoidMots = 0; //corresponds poid du mots
                Console.WriteLine("le mots est " + mots);
                for (int i = 0; i < mots.Length; i++)
                {
                    if (mots[i] == 'X' || mots[i] == 'Y' || mots[i] == 'Z' || mots[i] == 'W' || mots[i] == 'K')
                    {
                        poid = 5;
                    }
                    else
                    {
                        poid = 0;
                    }
                    Lettre UneLettre = new Lettre(mots[i], poid);
                    PoidMots += poid;
                    if (Position[2].ToUpper() == "H")//on pose le mots sur la grille
                    {
                        GrilleMatrice[int.Parse(Position[0]) - 1, int.Parse(Position[1]) - 1 + i] = UneLettre;
                    }
                    if (Position[2].ToUpper() == "V")
                    {
                        GrilleMatrice[int.Parse(Position[0]) - 1 + i, int.Parse(Position[1]) - 1] = UneLettre;
                    }
                }
                Console.WriteLine($"Le poid du mot est {PoidMots}");
                List <string> Mots = new List <string>();
                Mots.Add(mots);
                ListeMotsTrouves.Add(mots);
                CalculScore();
            }
            else
            {
                Console.WriteLine("ERREUR => NON POSSIBLE"); //une des 3 verifications a renvoyé false
                UnMot.MotsGrille.Remove(mots);               //on actualise
                ListeMotsTrouves.Remove(mots);
            }
            Add_Lettres(2, Jeu1.LaPioche, r); //un tour est effectué, on ajoute deux lettre au joueur en cours
            Console.WriteLine($"Nouveau Score = {this.Score}");
            //si le mots est valable
            AfficherGrille();
        }