/// <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); } }
/// <summary> /// Calcul des points de damage si l'attaque utilise des facultés "Spéciales". /// </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> /// <returns>Les points de damage</returns> int CalculPointsDamageSpécial(Pokemon attaquant, Pokemon opposant, Attaque attaqueChoisie) { float damage; float multiplicateurType = attaqueChoisie.GetTypeMultiplier(opposant.Type1, opposant.Type2); AfficherMessageMultiplicateur(multiplicateurType); damage = ((2 * attaquant.Level / 5 + 2) * attaqueChoisie.Power * (attaquant.SpecialAttack / (float)opposant.SpecialDefense) / 50) * multiplicateurType; return(CalculerDamageMinimal(damage)); }
/// <summary> /// Calcul des points de damage si l'attaque utilise des facultés "Physiques". /// </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> /// <returns>Les points de damage</returns> int CalculPointsDamagePhysique(Pokemon attaquant, Pokemon opposant, Attaque attaqueChoisie)// s'il y a un base power { float damage; float multiplicateurType = attaqueChoisie.GetTypeMultiplier(opposant.Type1, opposant.Type2); AfficherMessageMultiplicateur(multiplicateurType); damage = ((2 * attaquant.Level / 5f + 2) * attaqueChoisie.Power * (attaquant.Attack / (float)opposant.Defense) / 50f) * multiplicateurType; return(CalculerDamageMinimal(damage)); }
void VérifierSiNouvelleAttaqueApprise() { if (Level == 10) { Attaque nouvelleAttaque = new Attaque(Game, int.Parse(LearnsetEnString[4])); AttaquesList.Add(nouvelleAttaque); //AttribuerAttaquesParDéfaut(); Game.Components.Add(new AfficheurTexte(Game, Jeu.PositionBoxMessage, Jeu.LargeurBoxMessage, Jeu.HauteurBoxMessage, Nom + " learned " + nouvelleAttaque.Name + "!", Jeu.INTERVALLE_MAJ_STANDARD)); } else if (Level == 25) { Attaque nouvelleAttaque = new Attaque(Game, int.Parse(LearnsetEnString[5])); AttaquesList.Add(nouvelleAttaque); //AttribuerAttaquesParDéfaut(); Game.Components.Add(new AfficheurTexte(Game, Jeu.PositionBoxMessage, Jeu.LargeurBoxMessage, Jeu.HauteurBoxMessage, Nom + " learned " + nouvelleAttaque.Name + "!", Jeu.INTERVALLE_MAJ_STANDARD)); } }
public static void AppliquerEffetAttaque(Pokemon attaquant, Pokemon opponent, Attaque attaqueChoisie) { }