// Méthode lorsque le joueur a perdu à cause d’un joueur public void TransfererPossessions(Joueur J) { Console.ReadKey(); Console.WriteLine("\r" + " " + "\r"); Console.Clear(); Console.WriteLine("============ {0} ============", J.Nom); // Transfert des terrains for (int i = 0; i < Terrains.Count; i++) { Console.WriteLine("\nVous récupérez le terrain " + Terrains[i].NomCase); // Vente des maisons, si nécessaire if (Terrains[i].NbMaisons != 0) { J.AjoutArgent(Terrains[i].NbMaisons * Terrains[i].PrixMaison / 2); } // Vente des hôtels, si nécessaire else if (Terrains[i].Hotel) { J.AjoutArgent(Terrains[i].PrixHotel / 2 + 2 * Terrains[i].PrixMaison); } J.AjouterTerrain(Terrains[i]); Terrains[i].ModifierProprio(J); } // Transfert des gares for (int i = 0; i < Gares.Count; i++) { Console.WriteLine("\nVous récupérez la gare " + Gares[i].NomCase); J.AjouterGare(Gares[i]); Gares[i].ModifierProprio(J); } // Transfert des services publics for (int i = 0; i < Services.Count; i++) { Console.WriteLine("\nVous récupérez le service public " + Services[i].NomCase); J.AjouterService(Services[i]); Services[i].ModifierProprio(J); } // Transfert des cartes à conserver, si nécessaire if (Chance) { J.Chance = true; } if (Communaute) { J.Communaute = true; } // Mise à jour des couleurs pour le joueur qui récupère les terrains J.MAJCouleur(); }
// Méthode pour vendre un hôtel public void VendreHotel(Joueur J) { // Vérification pour savoir s’il faut faire une mise à jour ReinitialiserVendable(J); int Rep = 0; bool Entier = false; // Tant que le joueur n’a pas entré 1 ou 2 while (!Entier) { Console.WriteLine("\nTapez 1 si vous souhaitez vendre votre hôtel à moitié prix et récupérer les 4 maisons"); Console.WriteLine("\nTapez 2 si vous souhaitez vendre votre hôtel à moitié prix et récupérer la moitié du prix des 4 maisons"); Console.Write("Votre réponse : "); Entier = Erreur(Console.ReadLine(), out Rep); if (!Entier) { Console.WriteLine("\nVous n’avez pas tapé 1 ou 2\nVeuillez recommencer"); } } // Cas où le joueur peut vendre son hôtel et a tapé 1 if (Rep == 2 && !Constructible && Hotel) { Hotel = false; NbMaisons = 4; Constructible = true; J.AjoutArgent(PrixHotel / 2); Console.WriteLine("\nAppuyez sur une touche pour continuer"); Console.ReadKey(); Console.Write("\r" + " " + "\r"); } // Cas où le joueur peut vendre son hôtel et a tapé 2 else if (Rep == 1 && !Constructible && Hotel) { Hotel = false; Constructible = true; J.AjoutArgent(PrixHotel / 2 + 2 * PrixMaison); Console.WriteLine("\nAppuyez sur une touche pour continuer"); Console.ReadKey(); Console.Write("\r" + " " + "\r"); } // Cas où le joueur ne peut pas vendre d’hôtels else { Console.WriteLine("\nVous ne pouvez pas vendre d’hôtels sur ce terrain"); Console.WriteLine("Appuyez sur une touche pour continuer"); Console.ReadKey(); Console.Write("\r" + " " + "\r"); } }
// Méthode pour vendre une maison public void VendreMaison(Joueur J) { // Vérification pour savoir s’il faut faire une mise à jour ReinitialiserVendable(J); // Cas où le joueur peut vendre une maison if (!Constructible && !Hotel) { NbMaisons -= 1; Constructible = true; J.AjoutArgent(PrixMaison / 2); Console.WriteLine("\nAppuyez sur une touche pour continuer"); Console.ReadKey(); Console.Write("\r" + " " + "\r"); } // Cas où le joueur ne peut pas vendre de maison else { Console.WriteLine("\nVous ne pouvez pas vendre de maisons sur ce terrain"); Console.WriteLine("Appuyez sur une touche pour continuer"); Console.ReadKey(); Console.Write("\r" + " " + "\r"); } }
// Méthode pour piocher une carte public bool PiocherCarte(Joueur J, Case[] Plateau, List <Joueur> Joueurs) { // Carte tirée Carte Carte = Piopioche[DessusPioche % Piopioche.Count]; Console.WriteLine(Carte); // Cas d’une carte à conserver if (Carte.Type == "Prison") { if (Plateau[J.Position].NomCase == "Chance") { J.Chance = true; } else if (Plateau[J.Position].NomCase == "Caisse de Communauté") { J.Communaute = true; } Memoire = Carte; Piopioche.Remove(Carte); } // Cas d’une carte de déplacement else if (Carte.Type == "Deplacement") { // Cas où l’on avance if (Carte.Position >= 0) { J.AccesDirect(Plateau, Carte.Position); } // Cas où l’on recule else { J.Deplacement(Plateau, Carte.Position); } } // Cas d’une carte de débit else if (Carte.Type == "Debit") { J.RetraitArgent(Carte.Montant1); } // Cas d’une carte de crédit else if (Carte.Type == "Credit") { J.AjoutArgent(Carte.Montant1); } // Cas d’une carte d’impôt sur les bâtiments if (Carte.Type == "TaxeBatiment") { int NbMaisons = 0; int NbHotels = 0; double Virement = 0; // Calcul du nombre de maisons et d’hôtels possédés par le joueur for (int i = 0; i < J.Terrains.Count; i++) { NbMaisons += J.Terrains[i].NbMaisons; if (J.Terrains[i].Hotel) { NbHotels += 1; } } Virement = NbHotels * Carte.Montant2 + NbMaisons * Carte.Montant1; if (Virement != 0) { J.RetraitArgent(Virement); } } // Cas d’une carte anniversaire if (Carte.Type == "Anniversaire") { double Versement = 0; int i = 0; while (i < Joueurs.Count && J != Joueurs[i]) { Versement += Joueurs[i].RetraitArgent(Carte.Montant1); if (Joueurs[i].Perdu) { Joueurs[i].TransfererPossessions(J); } i += 1; } J.AjoutArgent(Versement); } // Cas d’une carte alternative if (Carte.Type == "AlternativeChance") { bool Entier = false; int Rep = 0; while (!Entier) { Console.WriteLine("\nTapez 1 pour payer l’amende"); Console.WriteLine("Tapez 2 pour tirer une carte Chance"); Console.Write("Votre réponse : "); try { Rep = int.Parse(Console.ReadLine()); if (Rep == 1 || Rep == 2) { Entier = true; } } catch { Console.WriteLine("\nVous n’avez pas tapé 1 ou 2\nVeuillez recommencer"); } } if (Rep == 1) { J.RetraitArgent(Carte.Montant1); } else if (Rep == 2) { return(true); } } DessusPioche += 1; return(false); }