Beispiel #1
0
        // 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();
        }
Beispiel #2
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);
        }
Beispiel #3
0
        // Méthode pour enchérir sur un terrain
        public void Enchere(List <Joueur> JS)
        {
            bool   Fin      = false;
            double Montant  = 0;
            Joueur Acheteur = null;

            // Tant qu’on n’a pas quitté l’enchère
            while (!Fin)
            {
                // 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)
                    {
                        // Calcul du nombre de terrains de la même couleur possédés par le joueur
                        int Nb = 0;
                        for (int j = 0; j < JS[i].Terrains.Count; j++)
                        {
                            if (JS[i].Terrains[j].Couleur == Couleur)
                            {
                                Nb += 1;
                            }
                        }

                        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("Couleur : " + Couleur);
                        Console.WriteLine("Nombre de terrain 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);
                    }

                    // 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
                    Fin = true;

                    // Attribution du terrain 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.AjouterTerrain(this);
                    Proprietaire = Acheteur;
                    Acheteur.MAJCouleur();
                }

                // Cas où aucun joueur parmi les joueurs ne peut 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 ce terrain
                    Fin          = true;
                    Proprietaire = null;
                }
            }
        }