Beispiel #1
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;
                }
            }
        }
Beispiel #2
0
 // Constructeur des terrains
 public Terrain(string nom, double prix, string couleur, double[] loyer, double hypotheque,
                double prixM, double prixH, int nbM, bool hotel, bool constructible, Joueur proprio)
     : base(nom, prix)
 {
     Couleur       = couleur;
     Loyer         = new double[loyer.Length];
     Loyer         = loyer;
     Hypotheque    = hypotheque;
     PrixMaison    = prixM;
     PrixHotel     = prixH;
     NbMaisons     = nbM;
     Hotel         = hotel;
     Constructible = constructible;
     Proprietaire  = proprio;
 }
Beispiel #3
0
 // Méthode pour modifier le propriétaire
 public void ModifierProprio(Joueur J)
 {
     Proprietaire = J;
 }
Beispiel #4
0
 public override void Action(Joueur joueur)
 {
     Console.WriteLine("\nVous êtes maintenant en prison.");
     joueur.Prison   = true;
     joueur.Position = 10;
 }
Beispiel #5
0
 public override void Action(Joueur joueur, int valeur = 0)
 {
     joueur.Position = valeur;
 }
Beispiel #6
0
 public abstract bool GetBuy(Joueur acheteur);
Beispiel #7
0
        public void TourJoueur(Joueur joueur)
        {
            bool bonCoup;
            int  nbBonCoup = 0;


            int avancePosition;
            int premierLance;
            int secondLance;

            do
            {
                avancePosition = 0;
                bonCoup        = false;
                premierLance   = PremierDe.Roll();
                secondLance    = SecondDe.Roll();

                avancePosition += premierLance + secondLance;

                if (premierLance == secondLance)
                {
                    bonCoup = true;
                    nbBonCoup++;
                    if (nbBonCoup == 3)
                    {
                        SPrison.Action(joueur);
                    }
                }

                if (!joueur.IsPrisonnier)
                {
                    joueur.Position += avancePosition;

                    if (joueur.Position >= 40)
                    {
                        joueur.Position %= 40;
                        joueur.Solde    += 2000;
                    }

                    Object o = Plateau[joueur.Position];

                    switch (o)
                    {
                    case null:
                        break;

                    case AutreCase A:
                        PhaseAutre(A, joueur);
                        break;

                    case TerrainBuildAble T:
                        PhaseTerrainB(joueur, T);
                        break;

                    case TerrainNoBuild N:
                        PhaseTerrainN(joueur, N);
                        break;
                    }
                }
            } while (bonCoup && !joueur.IsPrisonnier);
        }
Beispiel #8
0
 public abstract void Action(Joueur joueur);
Beispiel #9
0
 public static void Transaction(Joueur payeur, int montant, Joueur receveur)
 {
     Transaction(payeur, montant);
     Transaction(montant, receveur);
 }
Beispiel #10
0
 public override void Action(Joueur joueur)
 {
     Console.WriteLine("\nVous visitez votre ami en prison pour fraude immobilière!!! Ne vous retrouvez pas dans la même situation...");
 }
Beispiel #11
0
        Plateau()
        {
            int num;

            Console.WriteLine("Veuillez entrer le nombre de joueur (<16)");
            Int32.TryParse(Console.ReadLine(), out num);
            while (num > 16 || num < 2)
            {
                Console.WriteLine("Veuillez entrer le nombre de joueur (<16)");
                Int32.TryParse(Console.ReadLine(), out num);
            }
            listJoueur = new Joueur[num];
            for (int i = 0; i < num; i++)
            {
                listJoueur[i] = new Joueur();
            }

            game  = true;
            board = new CaseFactory[40];

            board[0]  = new ActionFactory("Départ");
            board[1]  = new ProprieteFactory("Boulevard de Belleville", 15, 60);
            board[2]  = new ActionFactory("Caisse de Communauté");
            board[3]  = new ProprieteFactory("Rue Lecourbe", 15, 60);
            board[4]  = new ActionFactory("Impot sur le revenu");
            board[5]  = new ProprieteFactory("Gare Montparnasse", 50, 200);
            board[6]  = new ProprieteFactory("Rue de Vaugirard", 25, 100);
            board[7]  = new ActionFactory("Chance");
            board[8]  = new ProprieteFactory("Rue de Courcelles", 25, 100);
            board[9]  = new ProprieteFactory("Avenue de la république", 30, 120);
            board[10] = new ActionFactory("VisitJail");
            board[11] = new ProprieteFactory("Boulevard de la Villette", 35, 140);
            board[12] = new ProprieteFactory("Compagnie de distribution d'electricité", 30, 150);
            board[13] = new ProprieteFactory("Avenue de Neuilly", 35, 140);
            board[14] = new ProprieteFactory("Rue de Paradis", 40, 160);
            board[15] = new ProprieteFactory("Gare de Lyon", 50, 200);
            board[16] = new ProprieteFactory("Avenue Mozart", 45, 180);
            board[17] = new ActionFactory("Caisse de Communauté");
            board[18] = new ProprieteFactory("Boulevart Saint-Michel", 45, 180);
            board[19] = new ProprieteFactory("Place Pigalle", 50, 200);
            board[20] = new ActionFactory("FreePark");
            board[21] = new ProprieteFactory("Avenue Matignon", 25, 220);
            board[22] = new ActionFactory("Chance");
            board[23] = new ProprieteFactory("Boulevard Malesherbes", 25, 220);
            board[24] = new ProprieteFactory("Avenue Henri Martin", 25, 240);
            board[25] = new ProprieteFactory("Gare du Nord", 25, 200);
            board[26] = new ProprieteFactory("Faubourg Saint Honore", 25, 260);
            board[27] = new ProprieteFactory("Place de la Bourse", 25, 260);
            board[28] = new ProprieteFactory("Compagnie de distribution des eaux", 25, 150);
            board[29] = new ProprieteFactory("Rue Lafayette", 25, 280);
            board[30] = new ActionFactory("GoToJail");
            board[31] = new ProprieteFactory("Avenue de Breteuil", 75, 300);
            board[32] = new ProprieteFactory("Avenue Foch", 75, 300);
            board[33] = new ActionFactory("Caisse de Communauté");
            board[34] = new ProprieteFactory("Boulevard des Capucines", 80, 320);
            board[35] = new ProprieteFactory("Gare St Lazare", 50, 200);
            board[36] = new ActionFactory("Chance");
            board[37] = new ProprieteFactory("Boulevard des Champs-Elysées", 90, 350);
            board[38] = new ActionFactory("Taxe de Luxe");
            board[39] = new ProprieteFactory("Rue de la Paix", 100, 400);

            listAchats = new Achat[40];
            for (int i = 0; i < 40; i++)
            {
                listAchats[i] = new Achat(board[i].GetCase().Owner);
            }
            for (int i = 0; i < 40; i++)
            {
                foreach (Joueur j in listJoueur)
                {
                    listAchats[i].Attach(new JoueurObserver(j));
                }
            }
        }
Beispiel #12
0
 public Achat(Joueur own) : base(own)
 {
 }
 // Constructeur des services publics
 public ServicePublic(string nom, double prix, double[] loyerService, double hypotheque, Joueur proprio)
     : base(nom, prix)
 {
     Loyer        = new double[loyerService.Length];
     Loyer        = loyerService;
     Hypotheque   = hypotheque;
     Proprietaire = proprio;
 }
Beispiel #14
0
 // Méthode pour modifier le propriétaire
 public void ModifierProprio(Joueur J)
 {
     Proprietaire = J;
     NbMaisons    = 0;
     Hotel        = false;
 }
Beispiel #15
0
 public Observer(Joueur ownership)
 {
     this.owner = ownership;
 }
Beispiel #16
0
 public static void Transaction(Joueur payeur, int montant)
 {
     payeur.Argent = payeur.Argent - montant;
 }
Beispiel #17
0
        //méthode
        public override void Action(Joueur a)
        {
            if (nom.Equals("impot"))
            {
                Console.WriteLine("\nVous êtes sur la case Impôt sur le Revenu! Vous devez payer 200$!");
                if (a.Argent < 200)
                {
                    do
                    {
                        bool faill = true;
                        foreach (Gare el in Planche.monopoly)
                        {
                            if (el.Proprietaire.Equals(a))
                            {
                                el.Hypothequer(a, ref faill);
                            }
                        }
                        if (faill == true)
                        {
                            a.Faillite = true;
                        }
                        else
                        {
                            a.Faillite = false;
                        }
                    } while (a.Argent < 200);
                }

                Transaction(a, 200);
                Console.WriteLine("\nVous avez maintenant " + a.Argent + "$");
            }
            if (nom.Equals("taxe"))
            {
                Console.WriteLine("\nVous êtes sur la case Taxes de luxe! Vous devez payer 100$!");
                if (a.Argent < 100)
                {
                    do
                    {
                        bool faill = true;
                        foreach (Gare el in Planche.monopoly)
                        {
                            if (el.Proprietaire == a)
                            {
                                el.Hypothequer(a, ref faill);
                            }
                        }
                        if (faill == true)
                        {
                            a.Faillite = true;
                        }
                        else
                        {
                            a.Faillite = false;
                        }
                    } while (a.Argent < 100);
                }

                Transaction(a, 100);
                Console.WriteLine("\nVous avez maintenant " + a.Argent + "$");
            }
            if (nom.Equals("parking"))
            {
                Console.WriteLine("\nVous êtes sur la case Stationnement Gratuit! Prenez une pause, vous la méritez!");
            }
        }
Beispiel #18
0
 public static void Transaction(int montant, Joueur receveur)
 {
     receveur.Argent = receveur.Argent + montant;
 }
Beispiel #19
0
 public void Faillite(Joueur joueur)
 {
     joueur.Faillite = true;
     faillites++;
 }
Beispiel #20
0
 public virtual void Hypothequer(Joueur a, ref bool faill)
 {
 }
 public override void Action(Joueur joueur, int valeur = 0)
 {
     joueur.Solde += 0;
 }
Beispiel #22
0
 public JoueurObserver(Joueur joueur)
 {
     this.joueur = joueur;
 }
Beispiel #23
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);
        }
Beispiel #24
0
 public override void Action(Joueur joueur)
 {
     Payer(joueur);
 }
 public void AppliquerEffet(Joueur j)
 {
     Strategie.Action(j, Value);
 }
Beispiel #26
0
        public override void Action(Joueur joueur)
        {
            Random random   = new Random();
            int    resultat = random.Next(0, 13);

            switch (resultat)
            {
            case 0:
                Console.WriteLine("\nAvancez à l'avenue Illinois");
                joueur.Position = 24;
                Planche.Interaction(joueur);
                break;

            case 1:
                Console.WriteLine("\nVous êtes élu président du comité. Payez 50$ à chaque joueur.");
                Transactions(joueur, 50);
                break;

            case 2:
                Console.WriteLine("\nAllez marcher sur la promenade. Avancez votre jeton sur la promenade.");
                joueur.Position = 39;
                Planche.Interaction(joueur);
                break;

            case 3:
                Console.WriteLine("\nLa banque vous paie une dividende de 50$");
                Transaction(50, joueur);
                break;

            case 4:
                Console.WriteLine("\nAvancez votre jeton au chemin de fer le plus proche et payer le double de la location au propriétaire, à laquelle il a droit. Si le chemin de fer n'est pas vendu, vous pouvez l'acheter.");
                if (joueur.Position < 5)
                {
                    joueur.Position = 5;
                    Console.WriteLine("\nVous arrivez au chemin de fer Reading.");
                    Planche.Interaction(joueur);
                }
                else if (joueur.Position < 15 && joueur.Position > 5)
                {
                    joueur.Position = 15;
                    Console.WriteLine("\nVous arrivez au chemin de fer Pennsylvania.");
                    Planche.Interaction(joueur);
                }
                else if (joueur.Position < 25 && joueur.Position > 15)
                {
                    joueur.Position = 25;
                    Console.WriteLine("\nVous arrivez au chemin de fer B. & O.");
                    Planche.Interaction(joueur);
                }
                else
                {
                    joueur.Position = 35;
                    Console.WriteLine("\nVous arrivez au chemin de fer Short Line.");
                    Planche.Interaction(joueur);
                }
                break;

            case 5:
                Console.WriteLine("\nAvancez votre jeton au chemin de faire le plus proche et payer le double de la location au propriétaire, à laquelle il a droit. Si le chemin de fer n'est pas vendu, vous pouvez l'acheter.");
                if (joueur.Position < 5)
                {
                    joueur.Position = 5;
                    Console.WriteLine("\nVous arrivez au chemin de fer Reading.");
                    Planche.Interaction(joueur);
                }
                else if (joueur.Position < 15 && joueur.Position > 5)
                {
                    joueur.Position = 15;
                    Console.WriteLine("\nVous arrivez au chemin de fer Pennsylvania.");
                    Planche.Interaction(joueur);
                }
                else if (joueur.Position < 25 && joueur.Position > 15)
                {
                    joueur.Position = 25;
                    Console.WriteLine("\nVous arrivez au chemin de fer B. & O.");
                    Planche.Interaction(joueur);
                }
                else
                {
                    joueur.Position = 35;
                    Console.WriteLine("\nVous arrivez au chemin de fer Short Line.");
                    Planche.Interaction(joueur);
                }
                break;

            case 6:
                Console.WriteLine("\nReculez de 3 espaces.");
                joueur.Position = joueur.Position - 3;
                Planche.Interaction(joueur);
                break;

            case 7:
                Console.WriteLine("\nAvancez à GO. Réclamez 200$");
                joueur.Position = 0;
                Planche.Interaction(joueur);
                break;

            case 8:
                Console.WriteLine("\nAllez en prison, ne passer pas par GO et ne recevez pas 200$.");
                joueur.Prison   = true;
                joueur.Position = 10;
                break;

            case 9:
                Console.WriteLine("\nPayer la taxe des pauvres de 15$.");
                Transaction(joueur, 15);
                break;

            case 10:
                Console.WriteLine("\nVotre édifice et votre prêt prennent de la valeur, réclamez 150$.");
                Transaction(150, joueur);
                break;

            case 11:
                Console.WriteLine("\nVoyagez par le chemin de fer Reading. Si vous passez go réclamez 200$.");
                if (joueur.Position < 5)
                {
                    joueur.Position = 5;
                    Console.WriteLine("\nVous ne passez pas par GO, vous ne réclamez pas 200$.");
                    Planche.Interaction(joueur);
                }
                else
                {
                    joueur.Position = 5;
                    Console.WriteLine("\nVous passez par GO, vous réclamez 200$.");
                    Transaction(200, joueur);
                    Planche.Interaction(joueur);
                }
                break;

            case 12:
                Console.WriteLine("\nSortez de la prison sans frais, cette carte peut être gardée en cas de besoin ou pour être vendue.");
                joueur.NbrCartePrison++;
                break;

            case 13:
                Console.WriteLine("\nAvancez votre jeton au service public le plus près. S'il n'est pas vendu, vous pouvez l'acheter de la banque. S'il est vendu, lancez les dés et payer au propriétaire dix fois le montant indiqué par les dés.");
                if (joueur.Position < 12)
                {
                    joueur.Position = 12;
                    Console.WriteLine("\nVous arrivez au Electric Company.");
                    Planche.Interaction(joueur);
                }
                else
                {
                    joueur.Position = 28;
                    Console.WriteLine("\nVous arrivez au Water Works");
                    Planche.Interaction(joueur);
                }
                break;

                // Autres Cartes
            }
        }