Пример #1
0
        public void ShouldDealLessOrEqualToTwentyDamage()
        {
            IPokemon attackingPokemon = PokemonFactory.CreatePokemon <Pikachu>();
            IPokemon targetPokemon    = PokemonFactory.CreatePokemon <Onix>();

            TypeEffect effectOfTypeOnTargetPokemon = TypeComparer.CompareElectricType(targetPokemon.Types[0]);

            int totalDamage = TypeDamageCalculator.CalculateDamage(
                attackingPokemon,
                targetPokemon,
                attackingPokemon.Moves[1],
                effectOfTypeOnTargetPokemon
                );

            Assert.True(totalDamage <= 20);

            totalDamage = TypeDamageCalculator.CalculateDamage(
                attackingPokemon,
                targetPokemon,
                attackingPokemon.Moves[2],
                effectOfTypeOnTargetPokemon
                );

            Assert.True(totalDamage <= 20);
        }
Пример #2
0
        public void ShouldMoreThanTwentyButLessThanFiftyDamagePoints()
        {
            IPokemon attackingPokemon = PokemonFactory.CreatePokemon <Gengar>();
            IPokemon targetPokemon    = PokemonFactory.CreatePokemon <Pidgeot>();

            TypeEffect effectOfTypeOnTargetPokemon = TypeComparer.CompareGhostType(targetPokemon.Types[0]);

            int totalDamage = TypeDamageCalculator.CalculateDamage(
                attackingPokemon,
                targetPokemon,
                attackingPokemon.Moves[2],
                effectOfTypeOnTargetPokemon
                );

            Assert.True(totalDamage >= 20 && totalDamage < 50);

            totalDamage = TypeDamageCalculator.CalculateDamage(
                attackingPokemon,
                targetPokemon,
                attackingPokemon.Moves[1],
                effectOfTypeOnTargetPokemon
                );

            Assert.True(totalDamage >= 20 && totalDamage < 50);
        }
Пример #3
0
        public void ShouldDealMoreThanFiftyDamagePoints()
        {
            IPokemon attackingPokemon = PokemonFactory.CreatePokemon <Venusaur>();
            IPokemon targetPokemon    = PokemonFactory.CreatePokemon <Golem>();

            TypeEffect effectOfTypeOnTargetPokemon = TypeComparer.CompareGrassType(targetPokemon.Types[0]);

            int totalDamage = TypeDamageCalculator.CalculateDamage(
                attackingPokemon,
                targetPokemon,
                attackingPokemon.Moves[3],
                effectOfTypeOnTargetPokemon
                );

            Assert.True(totalDamage > 50);
        }
Пример #4
0
        private static void ProcessAttack(IPokemon attackingPokemon, IPokemon targetPokemon, IMove move)
        {
            TypeEffect moveEffectOnPokemon = TypeComparer.GetMoveEffectivenessBasedOnPokemonType(move.Type, targetPokemon.Types.FirstOrDefault());

            int calculatedDamage = TypeDamageCalculator.CalculateDamage(attackingPokemon, targetPokemon, move, moveEffectOnPokemon);

            attackingPokemon.UseMove(move);

            if (move.StatusMoves != null)
            {
                BattleAux.ProcessStatusAttack(attackingPokemon, targetPokemon, move);
            }
            else
            {
                targetPokemon.ReceiveDamage(calculatedDamage);
                ConsoleBattleInfoPokemon.ShowPokemonReceivedDamage(targetPokemon, calculatedDamage);
                ConsoleBattleInfoTypes.ShowHowEffectiveTheMoveWas(moveEffectOnPokemon);
            }
        }