コード例 #1
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);
        }
コード例 #2
0
        // Méthode pour récupérer le plateau
        private Case[] RecupPlateau(XElement racine)
        {
            List <XElement> Liste = (from c in racine.Descendants("Case") select c).ToList <XElement>();

            Case[] TabCases = new Case[Liste.Count];

            for (int i = 0; i < TabCases.Length; i++)
            {
                string Type = (string)Liste[i].Attribute("Type");

                if (Type == "Case")
                {
                    TabCases[i] = new Case((string)Liste[i].Element("NomCase"), (double)Liste[i].Element("Prix"));
                }

                else if (Type == "Gare")
                {
                    // Vérification pour savoir si la gare appartient à quelqu’un et récupération de l’éventuel propriétaire
                    Joueur Proprio = null;
                    if (Liste[i].Element("Proprietaire") != null)
                    {
                        for (int j = 0; j < Joueurs.Count; j++)
                        {
                            if ((string)Liste[i].Element("Proprietaire") == Joueurs[j].Nom)
                            {
                                Proprio = Joueurs[j];
                            }
                        }
                    }

                    // Construction de la gare
                    TabCases[i] = new Gare(
                        (string)Liste[i].Element("NomCase"),
                        (double)Liste[i].Element("Prix"),
                        new double[] {
                        (double)Liste[i].Element("LoyerGare").Element("G1"),
                        (double)Liste[i].Element("LoyerGare").Element("G2"),
                        (double)Liste[i].Element("LoyerGare").Element("G3"),
                        (double)Liste[i].Element("LoyerGare").Element("G4")
                    },
                        (double)Liste[i].Element("Hypotheque"),
                        (Proprio != null) ? Proprio : null);

                    // Ajout de la gare à la liste de gares du propriétaire
                    if (Proprio != null)
                    {
                        Proprio.AjouterGare((Gare)TabCases[i]);
                    }
                }

                else if (Type == "ServicePublic")
                {
                    // Vérification pour savoir si le service public appartient à quelqu’un et récupération de l’éventuel propriétaire
                    Joueur Proprio = null;
                    if (Liste[i].Element("Proprietaire") != null)
                    {
                        for (int j = 0; j < Joueurs.Count; j++)
                        {
                            if ((string)Liste[i].Element("Proprietaire") == Joueurs[j].Nom)
                            {
                                Proprio = Joueurs[j];
                            }
                        }
                    }

                    // Construction du service public
                    TabCases[i] = new ServicePublic(
                        (string)Liste[i].Element("NomCase"),
                        (double)Liste[i].Element("Prix"),
                        new double[] { (double)Liste[i].Element("LoyerService").Element("S1"), (double)Liste[i].Element("LoyerService").Element("S2") },
                        (double)Liste[i].Element("Hypotheque"),
                        (Proprio != null) ? Proprio : null);

                    // Ajout de la gare à la liste de services publics du propriétaire
                    if (Proprio != null)
                    {
                        Proprio.AjouterService((ServicePublic)TabCases[i]);
                    }
                }

                else if (Type == "Terrain")
                {
                    // Vérification que le terrain appartient à quelqu’un et récupération de l’éventuel propriétaire
                    Joueur Proprio = null;
                    if (Liste[i].Element("Proprietaire") != null)
                    {
                        for (int j = 0; j < Joueurs.Count; j++)
                        {
                            if ((string)Liste[i].Element("Proprietaire") == Joueurs[j].Nom)
                            {
                                Proprio = Joueurs[j];
                            }
                        }
                    }

                    // Construction du terrain
                    TabCases[i] = new Terrain(
                        (string)Liste[i].Element("NomCase"),
                        (double)Liste[i].Element("Prix"),
                        (string)Liste[i].Element("Couleur"),
                        new double[] {
                        (double)Liste[i].Element("LoyerTerrain").Element("Nu"),
                        (double)Liste[i].Element("LoyerTerrain").Element("M1"),
                        (double)Liste[i].Element("LoyerTerrain").Element("M2"),
                        (double)Liste[i].Element("LoyerTerrain").Element("M3"),
                        (double)Liste[i].Element("LoyerTerrain").Element("M4"),
                        (double)Liste[i].Element("LoyerTerrain").Element("H")
                    },
                        (double)Liste[i].Element("Hypotheque"),
                        (double)Liste[i].Element("PrixMaison"),
                        (double)Liste[i].Element("PrixHotel"),
                        (Liste[i].Element("NbMaisons") != null) ? (int)Liste[i].Element("NbMaisons") : 0,
                        (Liste[i].Element("Hotel") != null) ? (bool)Liste[i].Element("Hotel") : false,
                        (Liste[i].Element("Constructible")) != null ? (bool)Liste[i].Element("Constructible") : true,
                        (Proprio != null) ? Proprio : null);

                    // Ajout de la gare à la liste de terrains du propriétaire
                    if (Proprio != null)
                    {
                        Proprio.AjouterTerrain((Terrain)TabCases[i]);
                    }
                }
            }

            return(TabCases);
        }
コード例 #3
0
ファイル: Joueur.cs プロジェクト: remilieam/ensc-monopoly
 // Méthode pour ajouter un service public
 public void AjouterService(ServicePublic C)
 {
     Services.Add(C);
 }