Пример #1
0
        public Queue <AIAction> GetActionPlan()
        {
            Queue <AIAction> queue = new Queue <AIAction>();

            while (currentNode.GetAction() != null)
            {
                queue.Enqueue(currentNode.GetAction());
                currentNode = currentNode.GetParent();
            }

            Queue <AIAction> actionPlan = new Queue <AIAction>();

            while (queue.Count > 0)
            {
                actionPlan.Enqueue(queue.Dequeue());
            }

            return(actionPlan);
        }
Пример #2
0
        public Queue <IAIAction <L, V> > GetActionPlan()
        {
            var queue = new Queue <IAIAction <L, V> >();

            while (currentNode.GetAction() != null)
            {
                queue.Enqueue(currentNode.GetAction());
                currentNode = currentNode.GetParent();
            }

            var actionPlan = new Queue <IAIAction <L, V> >();

            while (queue.Count > 0)
            {
                actionPlan.Enqueue(queue.Dequeue());
            }

            return(actionPlan);
        }
Пример #3
0
 private bool AchievesPrecondition(AINode node)
 {
     foreach (var effect in node.GetAction().GetEffects())
     {
         if (currentNode.GetState().GetPreconditions().ContainsKey(effect.Key) && currentNode.GetState().GetPreconditions()[effect.Key].Equals(effect.Value))
         {
             return(true);
         }
     }
     return(false);
 }