public Jeu() { Joueurs joueur = new Joueurs(); //Planche cases = new Planche(); Dice des = new Dice(); Console.WriteLine("MONOPOLY"); int nombreJoueurs = joueur.Ajouter(); Planche.Initialiser(); int doubles = 0; bool game = true; do { for (int i = 0; i <= nombreJoueurs - 1; i++) { Joueur joueurActuel = joueur.Liste(i); if (joueurActuel.Faillite == true) { Console.WriteLine("\n{0} est en faillite. Le tour est au joueur suivant.", joueurActuel.Nom); } else if (joueurActuel.Prison == true) { Console.WriteLine("\n---------------------------------------"); Console.WriteLine("\nAu tour de {0}, mais vous êtes en prison.", joueurActuel.Nom); if (joueurActuel.NbrCartePrison >= 1) { Console.WriteLine("\nVoulez-vous utiliser votre carte pour sortir de prison et jouer au prochain tour? O/N"); string input1 = Console.ReadLine(); if (input1.Equals("O") || input1.Equals("o")) { joueurActuel.NbrCartePrison--; joueurActuel.Prison = false; joueurActuel.Position = 10; } else if (input1.Equals("N") || input1.Equals("N")) { AllerPrison.Sortir(joueurActuel); } } else { Console.WriteLine("\nEst-ce qu'un joueur veux vous vendre une carte chance ou caisse commune pour sortir de prison O/N"); string input1 = Console.ReadLine(); if (input1.Equals("O") || input1.Equals("o")) { Console.WriteLine("\nQuel est le nom du joueur qui veut vous vendre la carte vous permettant de sortir de prison ?"); string nomPrison = Console.ReadLine(); foreach (Joueur joueurPrison in Joueurs.joueurs) { if (nomPrison.Equals(joueurPrison.Nom)) { if (joueurPrison.NbrCartePrison >= 1) { Console.WriteLine("\nPour quel montant?"); int montantPrison = Int32.Parse(Console.ReadLine()); if (montantPrison <= joueurActuel.Argent) { Case.Transaction(joueurActuel, montantPrison, joueurPrison); joueurPrison.NbrCartePrison--; AllerPrison.Sortir(joueurActuel); } else { Console.WriteLine("\nVous n'avez pas assez d'argent pour lui payer la carte vous permetteant de sortir de prison."); } } else { Console.WriteLine("\nCe joueur ne possède pas de carte vous permettant de sortir de prison. Surveillez le pour le reste de la partie!"); AllerPrison.Sortir(joueurActuel); } } } } else { AllerPrison.Sortir(joueurActuel); } } } else { Console.WriteLine("\n---------------------------------------"); Console.WriteLine("\nAu tour de {0} de brasser les dés.", joueurActuel.Nom); Console.WriteLine("\nAppuyer sur une touche pour brasser les dés."); Console.ReadKey(); int deUn = Dice.Brasser(); int deDeux = Dice.Brasser(); Console.WriteLine("\nVous avez obtenu {0} et {1}", deUn, deDeux); if (deUn == deDeux) { if (doubles == 2) { Console.WriteLine("\nVous avez brasse 3 doubles de suite. Vous allez directement en prison sans passer par GO."); System.Threading.Thread.Sleep(500); Console.WriteLine("\nVous êtes maintenant en prison."); joueurActuel.Prison = true; joueurActuel.Position = 10; doubles = 0; continue; } else { i--; doubles++; Console.WriteLine("\nVous avez brassé un double, vous devez jouer à nouveau après ce tour."); } } else { doubles = 0; } //Console.ReadKey(); if (joueurActuel.Position + deUn + deDeux >= 39) { int actuel = joueurActuel.Position; joueurActuel.Position = (deUn + deDeux + actuel) - 39; //Console.ReadKey(); } else { joueurActuel.Position = deUn + deDeux + joueurActuel.Position; } Planche.Interaction(joueurActuel); } } if (joueur.Faillites == nombreJoueurs - 1) { game = false; } } while (game == true); }
// Méthode pour faire tourner la partie public void FairePartie() { bool Fin = false; int Tour = 0; // Tant qu’on ne quitte pas la partie ou qu’elle n’est pas finie while (!Fin) { // On fait jouer les joueurs les uns après les autres // Si la personne qui joue n’est pas en prison, on remet à 0 son compteur de double if (!Joueurs[Tour].Prison) { Joueurs[Tour].Double = 0; } // Tant que le joueur peut rejouer, il a droit à un nouveau tour while (Jouer(Joueurs[Tour]) && !Joueurs[Tour].Perdu) { Console.WriteLine("\nC’est à nouveau votre tour"); Console.ReadKey(); Console.Write("\r" + " " + "\r"); } // À chaque fin de tour, les joueurs peuvent effectuer des constructions, si cela leur est possible for (int i = 0; i < Joueurs.Count; i++) { if (Joueurs[i].Couleurs.Count != 0) { ModifBat(Joueurs[i]); } } // Si le joueur a perdu durant son tour, on l’élimine if (Joueurs[Tour].Perdu) { Joueurs.Remove(Joueurs[Tour]); } // Cas où il n’y a plus qu’un seul joueur (les autres ayant perdu) if (Joueurs.Count == 1) { Fin = true; Console.WriteLine("\nPartie terminée !"); Console.WriteLine("L’heureux gagnant est : " + Joueurs[0].Nom); } // Cas où il reste encore plus d’un joueur else { Tour = (Tour + 1) % Joueurs.Count; Console.WriteLine("\nAppuyez sur “ÉCHAP” pour quitter la partie"); Console.WriteLine("Appuyez sur une autre touche pour passer au joueur suivant"); ConsoleKey Touche = Console.ReadKey().Key; Console.Write("\r" + " " + "\r"); // Cas où l’on veut arrêter la partie if (Touche == ConsoleKey.Escape) { Fin = true; int Rep = 0; bool Entier = false; // Tant que le joueur n’a pas entré 1 ou 2 while (!Entier) { Console.Clear(); Console.WriteLine("Voulez-vous enregistrer la partie en cour ?"); Console.WriteLine("Tapez 1 pour Oui\nTapez 2 pour Non"); Console.Write("Votre réponse : "); Entier = Erreur(Console.ReadLine(), out Rep, 2); } // Cas où le joueur veut enregistrer la partie if (Rep == 1) { // Sérialisation des données Console.WriteLine("\nEntrer le nom sous lequel vous voulez sauverder votre partie"); Console.Write("Votre réponse : "); Sauver(Console.ReadLine()); Console.WriteLine("\nVotre partie a bien été enregistrée !"); } Console.WriteLine("\nAu revoir !"); } } } }