/// <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); } }
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); }
/// <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é); }
/// <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]); }