Exemple #1
0
        // Méthode pour payer ou non le loyer du terrain
        public void Payer(Joueur J)
        {
            // Cas où le joueur n’est pas le propriétaire du terrain
            if (Proprietaire != J)
            {
                Console.WriteLine("\nCe terrain appartient à " + Proprietaire.Nom);

                // Cas où le terrain possède un hôtel
                if (Hotel)
                {
                    // Mouvement d’argent entre le propriétaire et le joueur, et vérification que ce dernier n’a pas perdu
                    Proprietaire.AjoutArgent(J.RetraitArgent(Loyer[5]));
                    if (J.Perdu)
                    {
                        J.TransfererPossessions(Proprietaire);
                    }
                }

                // Cas où le terrain ne possède pas d’hôtel
                else
                {
                    double Versement = Loyer[NbMaisons];

                    // Vérification pour savoir s’il ne faut pas multiplier le loyer par 2
                    if (NbMaisons == 0)
                    {
                        bool FamilleCouleur = false;

                        for (int i = 0; i < J.Couleurs.Count; i++)
                        {
                            if (Couleur == J.Couleurs[i])
                            {
                                FamilleCouleur = true;
                            }
                        }

                        if (FamilleCouleur)
                        {
                            Versement = Loyer[NbMaisons] * 2;
                        }
                    }

                    // Mouvement d’argent entre le propriétaire et le joueur, et vérification que ce dernier n’a pas perdu
                    Proprietaire.AjoutArgent(J.RetraitArgent(Versement));
                    if (J.Perdu)
                    {
                        J.TransfererPossessions(Proprietaire);
                    }
                }
            }

            // Cas où le joueur est le propriétaire du terrain
            else
            {
                Console.WriteLine("\nCe terrain vous appartient");
            }
        }
Exemple #2
0
        // Méthode pour construire un hôtel
        public void ConstruireHotel(Joueur J)
        {
            // Vérification pour savoir s’il faut faire une mise à jour
            ReinitialiserConstructible(J);

            // Cas où le joueur peut construire un hôtel
            if (Constructible && NbMaisons == 4 && J.Argent - PrixHotel >= 0)
            {
                Hotel         = true;
                Constructible = false;
                NbMaisons     = 0;
                J.RetraitArgent(PrixHotel);
                Console.WriteLine("\nAppuyez sur une touche pour continuer");
                Console.ReadKey();
                Console.Write("\r" + " " + "\r");
            }

            // Cas où le joueur ne peut pas construire d’hôtels
            else
            {
                Console.WriteLine("\nVous ne pouvez pas construire d’hôtels sur ce terrain");
                Console.WriteLine("Appuyez sur une touche pour continuer");
                Console.ReadKey();
                Console.Write("\r" + " " + "\r");
            }
        }
Exemple #3
0
        // Méthode pour construire une maison
        public void ConstruireMaison(Joueur J)
        {
            // Vérification pour savoir s’il faut faire une mise à jour
            ReinitialiserConstructible(J);

            // Cas où le joueur peut construire une maison
            if (Constructible && NbMaisons < 4 && J.Argent - PrixMaison >= 0)
            {
                NbMaisons    += 1;
                Constructible = false;
                J.RetraitArgent(PrixMaison);
                Console.WriteLine("Appuyez sur une touche pour continuer");
                Console.ReadKey();
                Console.Write("\r" + " " + "\r");
            }

            // Cas où le joueur ne peut pas construire de maisons
            else
            {
                Console.WriteLine("\nVous ne pouvez pas construire de maisons sur ce terrain");
                Console.WriteLine("\nAppuyez sur une touche pour continuer");
                Console.ReadKey();
                Console.Write("\r" + " " + "\r");
            }
        }
Exemple #4
0
        // Méthode pour acheter ou non un terrain
        public bool Acheter(Joueur J)
        {
            // Calcul du nombre de terrains de la même couleur possédés par le joueur
            int Nb = 0;

            for (int i = 0; i < J.Terrains.Count; i++)
            {
                if (J.Terrains[i].Couleur == Couleur)
                {
                    Nb += 1;
                }
            }

            int  Rep    = 0;
            bool Entier = false;

            // Tant que le joueur n’a pas entré 1 ou 2
            while (!Entier)
            {
                Console.WriteLine("\nVoulez-vous acheter ce terrain ?");
                Console.WriteLine("\nPrix : {0} EUR", Prix);
                Console.WriteLine("Couleur : " + Couleur);
                Console.WriteLine("Nombre de terrains de la même couleur : " + Nb);
                Console.WriteLine("\nTapez 1 pour Oui\nTapez 2 pour Non");
                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 veut acheter le terrain et a assez d’argent
            if (Rep == 1 && J.Argent - Prix >= 0)
            {
                J.AjouterTerrain(this);
                J.RetraitArgent(Prix);
                Proprietaire = J;
                J.MAJCouleur();
                return(true);
            }

            // Cas où le joueur veut acheter le terrain mais n’a pas assez d’argent
            else if (Rep == 1 && J.Argent - Prix < 0)
            {
                Console.WriteLine("\nVous n’avez pas suffisamment d’argent pour faire cet achat");
                return(false);
            }

            // Cas où le joueur ne veut pas acheter le terrain
            else if (Rep == 2)
            {
                return(false);
            }

            return(false);
        }
        // Méthode pour payer ou non le loyer du service public
        public void PayerService(Joueur J, int Des)
        {
            // Cas où le joueur n’est pas le propriétaire du service public
            if (Proprietaire != J)
            {
                // Mouvement d’argent entre le propriétaire et le joueur, et vérification que le joueur n’a pas perdu
                Console.WriteLine("\nCe service public appartient à " + Proprietaire.Nom);
                Proprietaire.AjoutArgent(J.RetraitArgent(Loyer[Proprietaire.Services.Count - 1] * Des));
                if (J.Perdu)
                {
                    J.TransfererPossessions(Proprietaire);
                }
            }

            // Cas où le joueur est le propriétaire du service public
            else
            {
                Console.WriteLine("\nCe service public vous appartient");
            }
        }
Exemple #6
0
        // Méthode pour payer ou non le loyer de la gare
        public void Payer(Joueur J)
        {
            // Cas où le joueur n’est pas le propriétaire de la gare
            if (Proprietaire != J)
            {
                Console.WriteLine("\nCette gare appartient à " + Proprietaire.Nom);

                // Mouvement d’argent entre le propriétaire et le joueur, et vérification que le joueur n’a pas perdu
                Proprietaire.AjoutArgent(J.RetraitArgent(Loyer[Proprietaire.Gares.Count - 1]));
                if (J.Perdu)
                {
                    J.TransfererPossessions(Proprietaire);
                }
            }

            // Cas où le joueur est le propriétaire de la gare
            else
            {
                Console.WriteLine("\nCette gare vous appartient");
            }
        }
Exemple #7
0
        // Méthode pour acheter ou non une gare
        public bool Acheter(Joueur J)
        {
            int  Rep    = 0;
            bool Entier = false;

            // Tant que le joueur n’a pas entré 1 ou 2
            while (!Entier)
            {
                Console.WriteLine("\nVoulez-vous acheter cette gare ?");
                Console.WriteLine("\nPrix : {0} EUR", Prix);
                Console.WriteLine("Nombre de gares que vous possédez : " + J.Gares.Count);
                Console.WriteLine("\nTapez 1 pour Oui\nTapez 2 pour Non");
                Console.Write("Votre réponse : ");
                Entier = Erreur(Console.ReadLine(), out Rep);
            }

            // Cas où le joueur veut acheter la gare et a assez d’argent
            if (Rep == 1 && J.Argent - Prix >= 0)
            {
                J.AjouterGare(this);
                Proprietaire = J;
                J.RetraitArgent(Prix);
                return(true);
            }

            // Cas où le joueur veut acheter la gare mais n’a pas assez d’argent
            else if (Rep == 1 && J.Argent - Prix < 0)
            {
                Console.WriteLine("\nVous n’avez pas suffisamment d’argent pour faire cet achat");
                return(false);
            }

            // Cas où le joueur ne veut pas acheter la gare
            else if (Rep == 2)
            {
                return(false);
            }

            return(false);
        }
Exemple #8
0
        // Méthode pour faire jouer un joueur
        private bool Jouer(Joueur J)
        {
            // Rappel de la personne qui joue et de sa cagnotte
            Console.Clear();
            Console.WriteLine("============ {0} ============", J.Nom);
            Console.WriteLine("\nVotre solde : {0} EUR", J.Argent);

            // Booléens
            bool Rejouer = false; // Pour savoir si le joueur devra rejouer
            bool FinTour = false; // Pour savoir si le joueur peut bouger

            // Lancé des dés
            Console.WriteLine("\nPour lancer les dés, appuyez sur une touche");
            Console.ReadKey();
            Console.Write("\r" + " " + "\r");
            Random Alea = new Random();
            int    De1  = Alea.Next(1, 7);
            int    De2  = Alea.Next(1, 7);

            if (De1 == De2 && !J.Prison)
            {
                Rejouer   = true;
                J.Double += 1;
            }

            Console.WriteLine(@"

                   +---+      +---+
Résultat des dés : | " + De1 + " |  et  | " + De2 + @" |
                   +---+      +---+
");

            // Cas où la personne est en prison
            if (J.Prison)
            {
                // Cas où le joueur a fait un double
                if (De1 == De2 && J.Double < 3)
                {
                    int  Rep    = 0;
                    bool Entier = false;

                    // Tant que le joueur n’a pas entré 1 ou 2
                    while (!Entier)
                    {
                        Console.WriteLine("\nVoulez-vous sortir de prison ?");
                        Console.WriteLine("Tapez 1 pour Oui\nTapez 2 pour Non");
                        Console.Write("Votre réponse : ");
                        Entier = Erreur(Console.ReadLine(), out Rep, 2);
                    }

                    if (Rep == 1)
                    {
                        Rejouer  = false;
                        J.Prison = false;
                        J.Double = 0;
                    }
                }

                // Cas où le joueur a la carte Chance lui permettant de sortir de prison
                if (J.Prison && J.Chance && J.Double < 3)
                {
                    int  Rep    = 0;
                    bool Entier = false;

                    // Tant que le joueur n’a pas entré 1 ou 2
                    while (!Entier)
                    {
                        Console.WriteLine("\nVoulez-vous utiliser votre carte Chance pour sortir de prison ?");
                        Console.WriteLine("Tapez 1 pour Oui\nTapez 2 pour Non");
                        Console.Write("Votre réponse : ");
                        Entier = Erreur(Console.ReadLine(), out Rep, 2);
                    }

                    if (Rep == 1)
                    {
                        J.Prison = false;
                        Pioches[0].AjouterCarte(Pioches[0].Memoire);
                        J.Double = 0;
                    }
                }

                // Cas où le joueur a la carte Caisse de Communauté lui permettant de sortir de prison
                if (J.Prison && J.Communaute && J.Double < 3)
                {
                    int  Rep    = 0;
                    bool Entier = false;

                    // Tant que le joueur n’a pas entré 1 ou 2
                    while (!Entier)
                    {
                        Console.WriteLine("\nVoulez-vous utiliser votre carte Caisse de Communauté pour sortir de prison ?");
                        Console.WriteLine("Tapez 1 pour Oui\nTapez 2 pour Non");
                        Console.Write("Votre réponse : ");
                        Entier = Erreur(Console.ReadLine(), out Rep, 2);
                    }

                    if (Rep == 1)
                    {
                        J.Prison = false;
                        Pioches[1].AjouterCarte(Pioches[1].Memoire);
                        J.Double = 0;
                    }
                }

                // Cas où le joueur n’a rien (ou ne veut rien faire)
                if (J.Prison)
                {
                    // Cas où le joueur est en prison depuis moins de 3 tours
                    if (J.Double < 2)
                    {
                        int  Rep    = 0;
                        bool Entier = false;

                        // Tant que le joueur n’a pas entré 1 ou 2
                        while (!Entier)
                        {
                            Console.WriteLine("\nVoulez-vous payer une amende de 50 EUR pour sortir de prison ?");
                            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 payer son amende et peut
                        if (Rep == 1 && J.Argent - 50 >= 0)
                        {
                            J.Prison = false;
                            J.RetraitArgent(50);
                            J.Double = 0;
                        }

                        // Cas où le joueur veut payer son amende et ne peut pas
                        else if (Rep == 1 && J.Argent - 50 < 0)
                        {
                            // Il doit retenter sa chance au prochain tour en espérant toucher de l’argent entre temps
                            Console.WriteLine("\nVous ne pouvez pas payer l’amende");
                            Console.WriteLine("Attendez le prochain tour");
                            J.Double += 1;
                            FinTour   = true;
                        }

                        // Cas où le joueur veut retenter sa chance au prochain tour
                        else if (Rep == 2)
                        {
                            J.Double += 1;
                            FinTour   = true;
                        }
                    }

                    // Cas où le joueur est en prison depuis 3 tours
                    else
                    {
                        Console.WriteLine("\nVous êtes obligé de payer l’amende de 50 EUR");
                        J.Prison = false;
                        J.Double = 0;
                        J.RetraitArgent(50);

                        // Si le joueur a perdu son tour se finit dès maintenant et il rend ses possessions à la banque
                        if (J.Perdu)
                        {
                            FinTour = true;
                            J.RendrePossessions(Pioches, Joueurs);
                        }
                    }
                }
            }

            // Cas où la personne a fait 3 doubles d’affilé
            if (J.Double == 3 && !J.Prison)
            {
                J.AccesDirect(Plateau, 10);
                FinTour = true;
            }

            // Cas où le joueur peut bouger
            if (!FinTour && !J.Prison)
            {
                // Déplacement et gestion de la case Départ
                J.Deplacement(Plateau, (De1 + De2));

                // Cas où le joueur tombe sur une case Chance
                if (Plateau[J.Position].NomCase == "Chance")
                {
                    Pioches[0].PiocherCarte(J, Plateau, Joueurs);
                    if (J.Perdu)
                    {
                        J.RendrePossessions(Pioches, Joueurs);
                    }
                }

                // Cas où le joueur tombe sur une case Caisse de Communauté
                if (Plateau[J.Position].NomCase == "Caisse de Communauté")
                {
                    if (Pioches[1].PiocherCarte(J, Plateau, Joueurs))
                    {
                        Pioches[0].PiocherCarte(J, Plateau, Joueurs);
                    }
                    if (J.Perdu)
                    {
                        J.RendrePossessions(Pioches, Joueurs);
                    }
                }

                // Cas où le joueur tombe sur des cases où il doit payer des taxes
                if (J.Position == 4 || J.Position == 38)
                {
                    J.RetraitArgent(Plateau[J.Position].Prix);
                    if (J.Perdu)
                    {
                        J.RendrePossessions(Pioches, Joueurs);
                    }
                }

                // Cas où le joueur tombe sur une gare
                else if (Plateau[J.Position] is Gare)
                {
                    Gare GareActu = (Gare)Plateau[J.Position];

                    // Cas où la gare n’appartient à personne
                    if (GareActu.Proprietaire == null)
                    {
                        // Cas où le joueur ne souhaite pas acheter la gare
                        if (!GareActu.Acheter(J))
                        {
                            GareActu.Enchere(Joueurs);
                        }
                    }

                    // Cas où la gare appartient à quelqu’un
                    else
                    {
                        GareActu.Payer(J);
                    }
                }

                // Cas où le joueur tombe sur un service public
                else if (Plateau[J.Position] is ServicePublic)
                {
                    ServicePublic ServiceActu = (ServicePublic)Plateau[J.Position];

                    // Cas où le service public n’appartient à personne
                    if (ServiceActu.Proprietaire == null)
                    {
                        // Cas où le joueur ne souhaite pas acheter le service public
                        if (!ServiceActu.Acheter(J))
                        {
                            ServiceActu.Enchere(Joueurs);
                        }
                    }

                    // Cas où le service public appartient à quelqu’un
                    else
                    {
                        ServiceActu.PayerService(J, De1 + De2);
                    }
                }

                // Cas où le joueur tombe sur un terrain
                else if (Plateau[J.Position] is Terrain)
                {
                    Terrain TerrainActu = (Terrain)Plateau[J.Position];

                    // Cas où le terrain n’appartient à personne
                    if (TerrainActu.Proprietaire == null)
                    {
                        // Cas où le joueur ne souhaite pas acheter le terrain
                        if (!TerrainActu.Acheter(J))
                        {
                            TerrainActu.Enchere(Joueurs);
                        }
                    }

                    // Cas où le terrain appartient à quelqu’un
                    else
                    {
                        TerrainActu.Payer(J);
                    }
                }

                // Cas où le joueur tombe sur le policier
                else if (J.Position == 30)
                {
                    J.AccesDirect(Plateau, 10);
                }
            }

            Console.ReadKey();
            Console.Write("\r" + " " + "\r");
            return(Rejouer);
        }
Exemple #9
0
        // 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);
        }
Exemple #10
0
        // Méthode pour enchérir sur une gare
        public void Enchere(List <Joueur> JS)
        {
            bool   FinEnc   = false;
            double Montant  = 0;
            Joueur Acheteur = null;

            // Tant qu’on n’a pas quitté l’enchère
            while (!FinEnc)
            {
                // On compte le nombre de refus à chaque tour de table
                int NbRefus = 0;

                // On regarde qui veut enchérir parmi tous les joueurs de la table
                for (int i = 0; i < JS.Count; i++)
                {
                    int  Rep    = 0;
                    bool Entier = false;
                    Console.Clear();
                    Console.WriteLine("============ {0} ============", JS[i].Nom);

                    // Tant que le joueur n’a pas entré 1 ou 2
                    while (!Entier)
                    {
                        Console.WriteLine("\nVoulez-vous enchérir sur {0} ?", NomCase);
                        Console.WriteLine("\nEnchère actuelle : {0} EUR", Montant);
                        Console.WriteLine("Prix initial : {0} EUR", Prix);
                        Console.WriteLine("Votre solde : {0} EUR", JS[i].Argent);
                        Console.WriteLine("Nombre de gares que vous possédez : " + JS[i].Gares.Count);
                        Console.WriteLine("\nTapez 1 pour Oui\nTapez 2 pour Non");
                        Console.Write("Votre réponse : ");
                        Entier = Erreur(Console.ReadLine(), out Rep);
                    }

                    // Cas où le joueur veut enchérir et peut
                    if (Rep == 1 && JS[i].Argent - Montant > 0)
                    {
                        double Enc  = 0;
                        bool   Reel = false;

                        // Vérification que le joueur rentre un réel, plus grand que l’enchère actuelle et qu’il peut dépenser cette somme
                        while (!Reel)
                        {
                            Console.Write("\nEntrer une enchère supérieure à {0} EUR : ", Montant);
                            try
                            {
                                Enc = double.Parse(Console.ReadLine());
                                if (Enc > Montant && JS[i].Argent - Enc >= 0)
                                {
                                    Montant  = Enc;
                                    Reel     = true;
                                    Acheteur = JS[i];
                                }
                            }
                            catch
                            {
                                Console.WriteLine("\nVous n’avez pas tapé 1 ou 2");
                                Console.WriteLine("OU vous n’avez pas entrée une enchère assez élevée");
                                Console.WriteLine("OU vons n’avez pas assez d’argent pour affectuer une telle enchère\nVeuillez recommencer");
                            }
                        }
                    }

                    // Cas où le joueur veut enchérir mais ne peut pas par manque d’argent
                    else if (Rep == 1 && JS[i].Argent - Montant <= 0)
                    {
                        Console.WriteLine("\nVons n’avez pas assez d’argent pour participer à cette enchère");
                        NbRefus += 1;
                    }

                    // Cas où le joueur ne veut pas enchérir
                    else if (Rep == 2)
                    {
                        NbRefus += 1;
                    }
                }

                // Cas où un seul joueur parmi tous les joueurs enchérit lors d’un tour de table
                if (NbRefus == JS.Count - 1 || (NbRefus == JS.Count && Montant != 0))
                {
                    // C’est la fin de l’enchère
                    FinEnc = true;

                    // Attribution de la gare au joueur qui a enchéri la plus grosse somme
                    Console.Clear();
                    Console.WriteLine("============ {0} ============", Acheteur.Nom);
                    Console.WriteLine("\nFélicitations ! Vous avez remporté l’enchère");
                    Acheteur.RetraitArgent(Montant);
                    Acheteur.AjouterGare(this);
                    Proprietaire = Acheteur;
                }

                // Cas où aucun joueur parmi les joueurs ne veut enchérir
                else if (NbRefus == JS.Count && Montant == 0)
                {
                    // C’est la fin de l’enchère et on n’a pas de propriétaire pour cette gare
                    FinEnc       = true;
                    Proprietaire = null;
                }
            }
        }