Esempio n. 1
0
        public ITurnAction GetTurnAction(IOwnBot ownBot, IReadOnlyCollection <IEnemy> enemies, IBattlefieldView battlefield)
        {
            if (!enemies.Any())
            {
                return(TurnAction.Idle());
            }

            if (ownBot.Energy.Percent < 10)
            {
                return(TurnAction.Recharge.Battery());
            }

            var enemy = enemies.First();

            if (ownBot.Health.Percent < 50 && ownBot.Shield.Percent < 50)
            {
                if (ownBot.Energy.Actual > 110)
                {
                    return(TurnAction.Recharge.Shield(100));
                }
                return(TurnAction.Move.AwayFrom(enemy.Position));
            }

            if (ownBot.DistanceTo(enemy) < (double)Attack.MaxRange / 2)
            {
                return(TurnAction.Attack(enemy));
            }

            return(TurnAction.Move.Towards(enemy.Position));
        }
Esempio n. 2
0
        public override void SetUp()
        {
            base.SetUp();
            Enemy = Get <IBotWorkshop>().Create(TestBotAI.Idle);
            var turnAction = TurnAction.Attack(Enemy.OutsideView);

            BotAI.TurnAction = turnAction;
            EnergyCost       = BotAI.TurnAction.EnergyCost;
        }
Esempio n. 3
0
        public ITurnAction GetTurnAction(
            IOwnBot ownBot,
            IReadOnlyCollection <IEnemy> enemies,
            IBattlefieldView battlefield)
        {
            var enemy = enemies.FirstOrDefault();

            return(enemy != null?TurnAction.Attack(enemy) : TurnAction.Idle());
        }
Esempio n. 4
0
        public void WhenClosestEnemyDistanceIs4_MyBotAttacks()
        {
            //prepare
            Mock.Get(myOwnBot).Setup(x => x.DistanceTo(myEnemyOne)).Returns(4);
            //act
            var result = sut.GetTurnAction(myOwnBot, enemiesCollection, myBattleField);

            //verify
            Assert.That(result, Is.InstanceOf(TurnAction.Attack(myEnemyOne).GetType()),
                        "When the distance to the enemy is 4, Attack action must be returned.");
        }
Esempio n. 5
0
        public ITurnAction GetTurnAction(IOwnBot ownBot, IReadOnlyCollection <IEnemy> enemies, IBattlefieldView battlefield)
        {
            if (enemies.Any())
            {
                var enemy      = enemies.First();
                var ownPlace   = battlefield[ownBot];
                var enemyPlace = battlefield[enemy];
                return(ownPlace.DistanceTo(enemyPlace) > 3
                    ? TurnAction.Move.Towards(enemyPlace)
                    : TurnAction.Attack(enemy));
            }

            return(TurnAction.Idle());
        }
Esempio n. 6
0
 private static ITurnAction Attack(IEnemy enemy)
 {
     return(TurnAction.Attack(enemy));
 }