Пример #1
0
        //FONCTIONS

        public Pokemon SwitchPokemon(Pokemon poke, Dresseur dress)
        {
            Console.WriteLine("Voulez-vous changer de pokémon ?\n0- OUI\n1-NON");
            int a = int.Parse(Console.ReadLine());

            while ((a != 0) && (a != 1))
            {
                Console.WriteLine("Veuillez choisir un chiffre entre 0 (OUI, je vaux changer de Pokémon) et 1 (NON, je ne veux pas).");
            }
            if (a == 0) //il veut changer
            {
                //Du moment où il veut changer, son pokemon perd ses victoires consecutives
                poke.VictoiresConsecutives = 0;
                return(dress.ChoixPokemonActif());
            }
            return(poke);
        }
Пример #2
0
        /// <summary>
        /// Lance le combat
        /// </summary>
        /// <param name="d1"></param>
        /// <param name="d2"></param>
        /// <returns></returns>
        public Dresseur LancerCombat(Dresseur d1, Dresseur d2) //d2 est potentiellement un joueur
        {
            bool FH = false;

            if ((d1 is Joueur) || (d2 is Joueur))
            {
                FH = true;
            }
            if (FH)
            {
                PresentationParticipants(d1, d2);
            }

            //On définit le gagnant par défaut
            Dresseur vainqueurCombat = d1;

            //Autres variables
            bool premiereBoucle   = true; //pour indiquer qu'il ne faut pas demander de changement de pokemon
            bool changementRecent = false;

            //On choisi les pokémons une première fois
            Pokemon pok1 = d1.ChoixPokemonActif();
            Pokemon pok2 = d2.ChoixPokemonActif();

            while ((d1.DresseurKO() == false) && (d2.DresseurKO() == false)) //tant que les deux ont au moins un pokemon en vie
            {
                //Attaque 1
                if (pok1.PVProvisoire == 0)                    //Si le pokemon en court est mort
                {
                    pok1             = d1.ChoixPokemonActif(); //et le pokémon mort est remplacé
                    changementRecent = true;
                }
                else
                {
                    if ((d1 is Joueur) && (premiereBoucle == false) && (changementRecent == false))
                    {
                        pok1 = SwitchPokemon(pok1, d1); //si le pokemon n'est pas mort, il peu changer (sauf si c'est le tout début du combat, où qu'il vient de le changer)
                    }
                }
                changementRecent = false;
                pok1.Attaque(pok2); //d1 est forcément non-KO, car on vient de rentrer dans le while
                //AFFICHAGE
                if (FH)
                {
                    Program.ColorerTexte(ConsoleColor.White, "\nNOUVEAU ROUND ");
                    Console.WriteLine(pok1.Nom + " attaque " + pok2.Nom + " !\n");
                    pok1.ToStringCombat();
                    pok2.ToStringCombat();
                }
                if (pok2.PVProvisoire == 0)       //si le pokemon attaqué est mort...
                {
                    pok1.VictoiresConsecutives++; //...on attribue la victoire à l'autre
                    if (pok1.VictoiresConsecutives == 2)
                    {
                        pok1.EvolutionPokemon(FH);
                    }
                }
                else //si il est pas ko
                {
                    pok1.VictoiresConsecutives = 0; //on annule les victoires consécutives de ce pokémon
                }
                //Attaque 2
                if (pok2.PVProvisoire == 0)                    //si le pokemon attaqué est mort...
                {
                    pok2             = d2.ChoixPokemonActif(); //... on le change (peut renvoyer null si d2 n'a plus de pokemon actifs)
                    changementRecent = true;
                }
                if (pok2 != null) //Si cette condition ne s'applique pas, cela signifie que d2 est KO, donc on va sortir du while;
                {
                    if ((d2 is Joueur) && (changementRecent == false))
                    {
                        pok2 = SwitchPokemon(pok2, d2);
                    }
                    changementRecent = false;
                    pok2.Attaque(pok1);
                    //AFFICHAGE
                    if (FH)
                    {
                        Program.ColorerTexte(ConsoleColor.White, "\nCONTRE-ATTAQUE");
                        Console.WriteLine(pok2.Nom + " attaque " + pok1.Nom + " !\n");
                        pok1.ToStringCombat();
                        pok2.ToStringCombat();
                    }
                    if (pok1.PVProvisoire == 0)       //si le pokemon attaqué est mort...
                    {
                        pok2.VictoiresConsecutives++; //...on attribue la victoire à l'autre
                        if (pok2.VictoiresConsecutives == 2)
                        {
                            pok2.EvolutionPokemon(FH);
                        }
                    }
                    else //si il est pas ko
                    {
                        pok2.VictoiresConsecutives = 0; //on annule les victoires consécutives de ce pokémon
                    }
                }
                if (premiereBoucle == true)
                {
                    premiereBoucle = false;
                }
            }
            //Déclaration du gagnant et élimination de l'autre (NbrJoueurs--)
            if (d1.DresseurKO() == true)
            {
                vainqueurCombat = d2;
            }
            NbrJoueurs--;
            return(vainqueurCombat);
        }