Пример #1
0
        // Robot event handler, when the robot sees another robot
        public override void OnScannedRobot(ScannedRobotEvent e)
        {
            //let each handler to handle onScaned event to build up complete data for all tick
            foreach (IHandleScanedRobot handleScanedRobot in handlers)
            {
                handleScanedRobot.HandleScanedRobot(this, e, lastScannedRobotEvent, operations, battleEvents);
            }

            if (tickcount == 0)
            {
                tickcount = minticks + (int)rnd.NextDouble() * ticksRange;
                var results =
                    handlers.Select(
                        handler => new { Evaludation = (int)handler.Evaluate(this, e, battleEvents), Handler = handler })
                    .OrderBy(item => item.Evaludation);
                var topones = results.Where(result => result.Evaludation == results.First().Evaludation);
                var choosen = topones.ElementAt((int)Math.Floor(rnd.NextDouble() * topones.Count())).Handler;
                currentHandler = choosen;
            }
            else
            {
                tickcount--;
            }

            ApplyOperations(currentHandler.HandleScanedRobot(this, e, lastScannedRobotEvent, operations, battleEvents));
            lastScannedRobotEvent = e;
        }
Пример #2
0
        //private IList<IHandleScanedRobot> handlers = new List<IHandleScanedRobot>() { new Handlers.Mercutio() };

        public override void Run()
        {
            currentHandler = handlers[0];
            // -- Initialization of the robot --
            IsAdjustGunForRobotTurn = true;
            IsAdjustRadarForGunTurn = true;
            SetTurnRadarRightRadians(double.MaxValue);

            while (true)
            {
                if (RadarTurnRemainingRadians == 0)
                {
                    SetTurnRadarRightRadians(double.MaxValue);
                }
                Execute();
            }
        }