コード例 #1
0
ファイル: Joueur.cs プロジェクト: remilieam/ensc-monopoly
        // 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();
        }
コード例 #2
0
        // 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");
            }
        }
コード例 #3
0
        // 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");
            }
        }
コード例 #4
0
ファイル: Pioche.cs プロジェクト: remilieam/ensc-monopoly
        // 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);
        }