Пример #1
0
        public void Attack(Pokemon attacker, Pokemon defender, double effectiveness)
        {
            double mult1    = (attacker.ExperiencePoint * 2) / 5;
            double mult2    = attacker.Attack / attacker.Defense;
            double modifier = effectiveness * _random.NextDouble() * (4.0 - 0.85) + 0.85;
            double damage   = (mult1 * mult2 + 2) * modifier;

            damage = Math.Round(damage);

            defender.DecreaseHitPoint(damage);
            defender.RemainingHitPoint = Math.Round(defender.RemainingHitPoint, 2);
            DisplayAttackMessage(effectiveness);
            Console.WriteLine($"{attacker.PokeName} gave {damage} damage!");

            if (defender.RemainingHitPoint <= 0)
            {
                HpFinishedEventArgs hpFinishedEventArgs = new HpFinishedEventArgs()
                {
                    RemainingHp = defender.RemainingHitPoint,
                    Loser       = defender,
                    Type        = FinishType.normal,
                    Winner      = attacker
                };
                OnHpFinished(hpFinishedEventArgs);
            }
        }
Пример #2
0
        public void UsePokeBall(PokeBall pokeBall)
        {
            pokeBall.Use(TrainersPoke, WildPoke);

            HpFinishedEventArgs hpFinishedEventArgs = new HpFinishedEventArgs()
            {
                RemainingHp = WildPoke.RemainingHitPoint,
                Loser       = WildPoke,
                Type        = FinishType.pokeBall,
                Winner      = TrainersPoke
            };

            OnHpFinished(hpFinishedEventArgs);
        }
Пример #3
0
        private void Battle_hpFinishedEventHandler(object sender, HpFinishedEventArgs e)
        {
            Console.WriteLine(Constants.battleOverMsg);
            Console.WriteLine($"{e.Winner.PokeName} won the battle!");
            isBattleOver = true;
            e.Winner.IncreaseExperiencePoint();

            if (e.Loser == TrainersPoke)
            {
                Trainer.Instance.DeletePokemon(e.Loser);
            }



            if (e.Type == FinishType.pokeBall)
            {
                Console.WriteLine($"You have now captured {e.Loser.PokeName}");
            }
        }
Пример #4
0
 private void OnHpFinished(HpFinishedEventArgs hpFinishedEventArgs)
 {
     HpFinishedEventHandlerInstance?.Invoke(this, hpFinishedEventArgs);
 }