예제 #1
0
파일: Jeu.cs 프로젝트: gabsoucy/Monopoly
        public Jeu()
        {
            Joueurs joueur = new Joueurs();
            //Planche cases = new Planche();
            Dice des = new Dice();

            Console.WriteLine("MONOPOLY");
            int nombreJoueurs = joueur.Ajouter();

            Planche.Initialiser();
            int  doubles = 0;
            bool game    = true;

            do
            {
                for (int i = 0; i <= nombreJoueurs - 1; i++)
                {
                    Joueur joueurActuel = joueur.Liste(i);
                    if (joueurActuel.Faillite == true)
                    {
                        Console.WriteLine("\n{0} est en faillite. Le tour est au joueur suivant.", joueurActuel.Nom);
                    }
                    else if (joueurActuel.Prison == true)
                    {
                        Console.WriteLine("\n---------------------------------------");
                        Console.WriteLine("\nAu tour de {0}, mais vous êtes en prison.", joueurActuel.Nom);
                        if (joueurActuel.NbrCartePrison >= 1)
                        {
                            Console.WriteLine("\nVoulez-vous utiliser votre carte pour sortir de prison et jouer au prochain tour? O/N");
                            string input1 = Console.ReadLine();
                            if (input1.Equals("O") || input1.Equals("o"))
                            {
                                joueurActuel.NbrCartePrison--;
                                joueurActuel.Prison   = false;
                                joueurActuel.Position = 10;
                            }

                            else if (input1.Equals("N") || input1.Equals("N"))
                            {
                                AllerPrison.Sortir(joueurActuel);
                            }
                        }
                        else
                        {
                            Console.WriteLine("\nEst-ce qu'un joueur veux vous vendre une carte chance ou caisse commune pour sortir de prison O/N");
                            string input1 = Console.ReadLine();
                            if (input1.Equals("O") || input1.Equals("o"))
                            {
                                Console.WriteLine("\nQuel est le nom du joueur qui veut vous vendre la carte vous permettant de sortir de prison ?");
                                string nomPrison = Console.ReadLine();
                                foreach (Joueur joueurPrison in Joueurs.joueurs)
                                {
                                    if (nomPrison.Equals(joueurPrison.Nom))
                                    {
                                        if (joueurPrison.NbrCartePrison >= 1)
                                        {
                                            Console.WriteLine("\nPour quel montant?");
                                            int montantPrison = Int32.Parse(Console.ReadLine());
                                            if (montantPrison <= joueurActuel.Argent)
                                            {
                                                Case.Transaction(joueurActuel, montantPrison, joueurPrison);
                                                joueurPrison.NbrCartePrison--;
                                                AllerPrison.Sortir(joueurActuel);
                                            }
                                            else
                                            {
                                                Console.WriteLine("\nVous n'avez pas assez d'argent pour lui payer la carte vous permetteant de sortir de prison.");
                                            }
                                        }
                                        else
                                        {
                                            Console.WriteLine("\nCe joueur ne possède pas de carte vous permettant de sortir de prison. Surveillez le pour le reste de la partie!");
                                            AllerPrison.Sortir(joueurActuel);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                AllerPrison.Sortir(joueurActuel);
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("\n---------------------------------------");
                        Console.WriteLine("\nAu tour de {0} de brasser les dés.", joueurActuel.Nom);
                        Console.WriteLine("\nAppuyer sur une touche pour brasser les dés.");
                        Console.ReadKey();

                        int deUn   = Dice.Brasser();
                        int deDeux = Dice.Brasser();

                        Console.WriteLine("\nVous avez obtenu {0} et {1}", deUn, deDeux);
                        if (deUn == deDeux)
                        {
                            if (doubles == 2)
                            {
                                Console.WriteLine("\nVous avez brasse 3 doubles de suite. Vous allez directement en prison sans passer par GO.");
                                System.Threading.Thread.Sleep(500);
                                Console.WriteLine("\nVous êtes maintenant en prison.");
                                joueurActuel.Prison   = true;
                                joueurActuel.Position = 10;
                                doubles = 0;
                                continue;
                            }
                            else
                            {
                                i--;
                                doubles++;
                                Console.WriteLine("\nVous avez brassé un double, vous devez jouer à nouveau après ce tour.");
                            }
                        }
                        else
                        {
                            doubles = 0;
                        }
                        //Console.ReadKey();
                        if (joueurActuel.Position + deUn + deDeux >= 39)
                        {
                            int actuel = joueurActuel.Position;
                            joueurActuel.Position = (deUn + deDeux + actuel) - 39;
                            //Console.ReadKey();
                        }
                        else
                        {
                            joueurActuel.Position = deUn + deDeux + joueurActuel.Position;
                        }
                        Planche.Interaction(joueurActuel);
                    }
                }
                if (joueur.Faillites == nombreJoueurs - 1)
                {
                    game = false;
                }
            } while (game == true);
        }
예제 #2
0
        // Méthode pour faire tourner la partie
        public void FairePartie()
        {
            bool Fin  = false;
            int  Tour = 0;

            // Tant qu’on ne quitte pas la partie ou qu’elle n’est pas finie
            while (!Fin)
            {
                // On fait jouer les joueurs les uns après les autres

                // Si la personne qui joue n’est pas en prison, on remet à 0 son compteur de double
                if (!Joueurs[Tour].Prison)
                {
                    Joueurs[Tour].Double = 0;
                }

                // Tant que le joueur peut rejouer, il a droit à un nouveau tour
                while (Jouer(Joueurs[Tour]) && !Joueurs[Tour].Perdu)
                {
                    Console.WriteLine("\nC’est à nouveau votre tour");
                    Console.ReadKey();
                    Console.Write("\r" + " " + "\r");
                }

                // À chaque fin de tour, les joueurs peuvent effectuer des constructions, si cela leur est possible
                for (int i = 0; i < Joueurs.Count; i++)
                {
                    if (Joueurs[i].Couleurs.Count != 0)
                    {
                        ModifBat(Joueurs[i]);
                    }
                }

                // Si le joueur a perdu durant son tour, on l’élimine
                if (Joueurs[Tour].Perdu)
                {
                    Joueurs.Remove(Joueurs[Tour]);
                }

                // Cas où il n’y a plus qu’un seul joueur (les autres ayant perdu)
                if (Joueurs.Count == 1)
                {
                    Fin = true;
                    Console.WriteLine("\nPartie terminée !");
                    Console.WriteLine("L’heureux gagnant est : " + Joueurs[0].Nom);
                }

                // Cas où il reste encore plus d’un joueur
                else
                {
                    Tour = (Tour + 1) % Joueurs.Count;
                    Console.WriteLine("\nAppuyez sur “ÉCHAP” pour quitter la partie");
                    Console.WriteLine("Appuyez sur une autre touche pour passer au joueur suivant");
                    ConsoleKey Touche = Console.ReadKey().Key;
                    Console.Write("\r" + " " + "\r");

                    // Cas où l’on veut arrêter la partie
                    if (Touche == ConsoleKey.Escape)
                    {
                        Fin = true;

                        int  Rep    = 0;
                        bool Entier = false;

                        // Tant que le joueur n’a pas entré 1 ou 2
                        while (!Entier)
                        {
                            Console.Clear();
                            Console.WriteLine("Voulez-vous enregistrer la partie en cour ?");
                            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 enregistrer la partie
                        if (Rep == 1)
                        {
                            // Sérialisation des données
                            Console.WriteLine("\nEntrer le nom sous lequel vous voulez sauverder votre partie");
                            Console.Write("Votre réponse : ");
                            Sauver(Console.ReadLine());
                            Console.WriteLine("\nVotre partie a bien été enregistrée !");
                        }

                        Console.WriteLine("\nAu revoir !");
                    }
                }
            }
        }