Esempio n. 1
0
        /// <summary>
        /// Fonction qui exécute l'attaque entre deux Pokémons.
        /// </summary>
        /// <param name="attaquant">Le Pokémon qui attaque</param>
        /// <param name="opposant">Le Pokémon qui se fait attaquer</param>
        /// <param name="attaqueChoisie">L'attaque qui a été choisie</param>
        void EffectuerAttaque(Pokemon attaquant, Pokemon opposant, Attaque attaqueChoisie)
        {
            int nombreAléatoire = Générateur.Next(0, 101);

            if (nombreAléatoire <= attaqueChoisie.Accuracy)//attaque!
            {
                //on va faire une attaque classique, ensuite on applique pardessus l'effet plus complexe peu importe l'attaque
                if (attaqueChoisie.EstUneAttaqueSpéciale() && attaqueChoisie.EstUneAttaqueAvecBasePowerValide())
                {
                    opposant.Défendre(CalculPointsDamageSpécial(attaquant, opposant, attaqueChoisie));
                }

                else if (attaqueChoisie.EstUneAttaquePhysique() && attaqueChoisie.EstUneAttaqueAvecBasePowerValide())
                {
                    opposant.Défendre(CalculPointsDamagePhysique(attaquant, opposant, attaqueChoisie));
                }

                Attaque.AppliquerEffetAttaque(attaquant, opposant, attaqueChoisie);
            }
            else
            {
                AfficheurTexte message = new AfficheurTexte(Game, PositionBox, Jeu.LargeurBoxMessage, Jeu.HauteurBoxMessage, "It missed!", IntervalMAJ);
                Game.Components.Add(message);
            }
        }
Esempio n. 2
0
        public int AttaqueAléatoire()//Temp
        {
            int attaqueAléatoire = 0;
            int index            = 0;

            do
            {
                index            = Générateur.Next(0, 4);
                attaqueAléatoire = AttaquesList[index];
            }while (AttaquesList[index] < 0);

            return(attaqueAléatoire);
        }
Esempio n. 3
0
        /// <summary>
        /// Fonction qui vérifie si le Pokémon s'est fait attraper ou non selon la formule originale.
        /// </summary>
        /// <param name="opponent">Le Pokémon que le joueur tente d'attraper</param>
        /// <returns>La valeur s'il est attrapé ou non</returns>
        bool EffectuerFormuleGenI(Pokemon opponent)
        {
            bool estAttrapé = false;

            if (!estAttrapé)
            {
                int m = Générateur.Next(0, 256);
                int f = (opponent.MaxHp * opponent.CatchRate * 4) / (opponent.HP * 12);
                //La possibilité de division entière est voulue, la source de l'algorithme le spécifie.
                if (f >= m)
                {
                    estAttrapé = true;
                }
            }
            return(estAttrapé);
        }
Esempio n. 4
0
        /// <summary>
        /// Fonction qui affiche le message de l'attaque aléatoire de l'adversaire et l'effectue.
        /// </summary>
        void EffectuerTourOpponent()
        {
            int    nbAléatoire = Générateur.Next(0, OpponentPokemon.NbAttaques);
            string préfixe     = "";

            if (EstOpponentSauvage)
            {
                préfixe = "Wild ";
            }
            else
            {
                préfixe = "Foe ";
            }
            AfficheurTexte message = new AfficheurTexte(Game, PositionBox, Jeu.LargeurBoxMessage, Jeu.HauteurBoxMessage, préfixe + OpponentPokemon.Nom + " used " + OpponentPokemon[nbAléatoire].ToString() + "!", IntervalMAJ);

            Game.Components.Add(message);
            EffectuerAttaque(OpponentPokemon, UserPokemon, OpponentPokemon[nbAléatoire]);
        }