/// <summary> /// Dans le main je vais initialiser deux joueurs et un jeu. Je vais faire jouer les joueurs chacun leurs tour /// tant que le jeu n'est pas terminé. /// </summary> /// <param name="args"></param> static void Main(string[] args) { //mon programme a une forte probabilité d'avoir le mauvais lien d'accés. //prenez soin SVP de fixer le lien d'accés a votre debug si ca ne marche pas. //Environment.CurrentDirectory = @"\\Mac\Home\Desktop\COURS\informatique\ProjetFinal-BLANQUE-Bertrand\ProjetFinal-BLANQUE-Bertrand\bin\Debug"; Console.WriteLine(Directory.GetCurrentDirectory()); Random r = new Random(); Joueur Joueur1 = new Joueur("prof"); Joueur Joueur2 = new Joueur("bertrand"); Jeu Jeu1 = new Jeu(2, Joueur1, Joueur2); InitialisationJeu(r, Joueur1, Joueur2, Jeu1); int i = 0; do { i += 1; UnTour(Joueur1, Joueur2, Jeu1, r, i); } while (!Jeu1.JeuFini()); }
/// <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(); }
/// <summary> /// Dans la méthode UnTour je donne la main a un joueur ou l'autre pour qu'il puisse se déclarer, déclarer /// son mots, et dire la position de celui ci. A la fin sa grille est actualisée dans la console. /// </summary> /// <param name="Joueur1"></param> /// <param name="Joueur2"></param> /// <param name="Jeu1"></param> /// <param name="r"></param> private static void UnTour(Joueur Joueur1, Joueur Joueur2, Jeu Jeu1, Random r, int i) { DateTime Copie = DateTime.Now; //permet de faire le Timer Console.WriteLine("Tour " + i); Console.WriteLine("Le joueur qui veut jouer rentre son Nom (maj ou non), Vous avez 60 secondes."); string Nom = Console.ReadLine(); Console.WriteLine("Rentrez le mots en MAJUSCULE"); string mots = Console.ReadLine(); Console.WriteLine("Saissiez la ligne, la colonne, h: horizontale v: verticale"); string saisie1 = Console.ReadLine(); string[] Position = saisie1.Split(','); MotsCroises MotsCroises1 = new MotsCroises(Joueur1);//Un objet MotsCroises pour chaque joueur MotsCroises MotsCroises2 = new MotsCroises(Joueur2); if (Nom.ToUpper() == Joueur1.Nom.ToUpper()) { Console.Clear(); if (DateTime.Now.Second + DateTime.Now.Minute * 60 - Copie.Second - Copie.Minute * 60 < 60) //verifie que il ne s'est pas écoulé 60 secondes. { Console.WriteLine($"DUREE DU TOUR => {DateTime.Now.Second + DateTime.Now.Minute * 60 - Copie.Second - Copie.Minute * 60} secondes"); Joueur1.PoserUnMot(mots, Position, MotsCroises1, Jeu1, r); //méthode qui permet de faire toutes les verifications et de poser un mot. et rajoute deux lettre a ce joueur Copie = DateTime.Now; Joueur2.Add_Lettres(2, Jeu1.LaPioche, r); //on ajoute deux lettres a l'autre joueur. } else { Console.WriteLine($"DUREE DU TOUR => {DateTime.Now.Second + DateTime.Now.Minute * 60 - Copie.Second - Copie.Minute * 60} secondes"); Console.WriteLine("TO LATE: temps dépassé"); Copie = DateTime.Now; Joueur1.Add_Lettres(2, Jeu1.LaPioche, r);//les deux prennent deux lettre Joueur2.Add_Lettres(2, Jeu1.LaPioche, r); } Console.WriteLine(Joueur1.toString()); Console.WriteLine("/////////////////////////////////////////////////////////////////"); Joueur2.AfficherGrille(); Console.WriteLine(Joueur2.toString()); } if (Nom.ToUpper() == Joueur2.Nom.ToUpper()) { Console.Clear(); if (DateTime.Now.Second + DateTime.Now.Minute * 60 - Copie.Second - Copie.Minute * 60 < 60) { Console.WriteLine($"DUREE DU TOUR => {DateTime.Now.Second + DateTime.Now.Minute * 60 - Copie.Second - Copie.Minute * 60} secondes"); Joueur2.PoserUnMot(mots, Position, MotsCroises2, Jeu1, r); Copie = DateTime.Now; Joueur1.Add_Lettres(2, Jeu1.LaPioche, r); } else { Console.WriteLine($"DUREE DU TOUR => {DateTime.Now.Second + DateTime.Now.Minute * 60 - Copie.Second - Copie.Minute * 60} secondes"); Console.WriteLine("TO LATE: temps dépassé"); Copie = DateTime.Now; Joueur1.Add_Lettres(2, Jeu1.LaPioche, r); Joueur2.Add_Lettres(2, Jeu1.LaPioche, r); } Console.WriteLine(Joueur2.toString()); Console.WriteLine("/////////////////////////////////////////////////////////////////"); Joueur1.AfficherGrille(); Console.WriteLine(Joueur1.toString()); } else //surement due a une erreur d'entrée de l'utilisateur. { Console.WriteLine("ERREUR => Veuillez rentrer le Nom de l'utlisateur et ecrire le mot puis" + " la position ex: 1,1,h"); i -= 1; //on annule le tour et c'est encore a lui de jouer. } }
/// <summary> /// J'initialise le jeu: Les joueurs et differents parametres. /// </summary> /// <param name="r"></param> /// <param name="Joueur1"></param> /// <param name="Joueur2"></param> /// <param name="Jeu1"></param> private static void InitialisationJeu(Random r, Joueur Joueur1, Joueur Joueur2, Jeu Jeu1) { Console.Clear(); ConsignesEtSpecificitéesDeMonProgramme(); //correspond aux consignes: comment utiliser mes JOKERS par ex Console.WriteLine("BIENVENUE DANS LE MIXMO"); Console.WriteLine("NOUS ALLONS DEBUTER UNE PARTIE"); Joueur1.AfficherGrille(); Joueur1.Add_Lettres(6, Jeu1.LaPioche, r); Console.WriteLine(Joueur1.toString()); Joueur2.Add_Lettres(6, Jeu1.LaPioche, r); Joueur2.AfficherGrille(); Console.WriteLine(Joueur2.toString()); }