Beispiel #1
0
        public string GetNextMove(State state, Countdown countdown)
        {
            if (state.RoundType < 0)
            {
                return(CommandHelper.SelectHero(HeroType.Valkyrie));
            }

            var heroInfo = state.GetMy(UnitType.Hero).First();

            if (!ReadyToAttack(heroInfo.Pos))
            {
                return(GotoPosition());
            }

            var unitsInRange = state.GetHis();
            var unitToAttack = unitsInRange.Where(u => u.Pos.InRadiusTo(heroInfo.Pos, heroInfo.AttackRange))
                               .OrderBy(u => u.Health)
                               .FirstOrDefault();

            if (unitToAttack != null)
            {
                return(CommandHelper.Attack(unitToAttack));
            }
            return(CommandHelper.Wait());
        }
        private static void Main(string[] args)
        {
            var reader   = new StateReader();
            var initData = reader.ReadInitData();

            var ironManAi       = new KiteAi(initData.AttackDirection, HeroType.IronMan);
            var doctorStrangeAi = new KiteAi(initData.AttackDirection, HeroType.DoctorStrange);
            var ais             = new List <AiBase>()
            {
                ironManAi, doctorStrangeAi,
            };

            while (true)
            {
                var state     = reader.ReadState(initData);
                var countdown = new Countdown(45);
                if (state.RoundType == -2)
                {
                    Console.WriteLine(CommandHelper.SelectHero(HeroType.IronMan));
                    continue;
                }

                if (state.RoundType == -1)
                {
                    Console.WriteLine(CommandHelper.SelectHero(HeroType.DoctorStrange));
                    continue;
                }

                foreach (var ai in ais)
                {
                    var move = ai.GetNextMove(state, countdown);
                    Console.Error.WriteLine(countdown);
                    Console.WriteLine(move);
                }
            }
        }