Beispiel #1
0
        public bool DoAction()
        {
            LinkedList <ActionType> actions = new LinkedList <ActionType>();

            foreach (var position in Body.CurrentPositions)
            {
                if (position == null)
                {
                    continue;
                }
                actions.AddRange(FindPossibleActions(position));
            }

            var actionsToExecute = actions.Where(a => ActionEvaluation.Evaluate(a) >= 0);

            actionsToExecute = actionsToExecute.OrderByDescending(a => ActionEvaluation.Evaluate(a)).Take(Math.Min(actionsToExecute.Count(), Size));

            if (!actions.Any())
            {
                return(false);
            }

            Body.ExecuteActions(actionsToExecute);
            return(true);
        }
Beispiel #2
0
        public bool DoAction()
        {
            var actions = FindPossibleActions(Body.CurrentPosition);

            if (!actions.Any())
            {
                return(false);
            }
            var actionToExecute = Utilities.MaxEntry(actions, a => ActionEvaluation.Evaluate(a));

            if (ActionEvaluation.Evaluate(actionToExecute) < 0)
            {
                return(false);
            }
            Body.ExecuteAction(actionToExecute);
            return(true);
        }