示例#1
0
        void traverse(Behavior child)
        {
            Console.WriteLine(child.ToString());
            if (child.HasChild)
            {
                foreach (Behavior b in child.Children)
                {

                    traverse(b);

                }

            }
        }
示例#2
0
        public void BuildTreeManually()
        {
            /*
            root = new Node<Behavior>(new Behavior("root", "root"));

             Node<Behavior> idle = root.AddChild((new Behavior("Idle","")));
                idle.AddChild(new Behavior("", "Use Computer"));
                idle.AddChild(new Behavior("", "Patrol"));

            Node<Behavior> Incoming =  root.AddChild((new Behavior("Incoming Projectile", "")));
                Incoming.AddChild((new Behavior("", "Evade")));

            Node<Behavior> combat =  root.AddChild((new Behavior("Combat", "")));
                  Node<Behavior> Melee = combat.AddChild((new Behavior("Melee", "")));
                              Melee.AddChild((new Behavior("", "Flee")));
                              Melee.AddChild((new Behavior("", "Attack")));

            Node<Behavior> Ranged = combat.AddChild((new Behavior("Ranged", "")));
                             Ranged.AddChild((new Behavior("", "Weapon 1")));
                             Ranged.AddChild((new Behavior("", "Weapon 2")));
                              Ranged.AddChild((new Behavior("", "Weapon 3")));

            */

            root = new Behavior("root", "root");

            Behavior idle = root.AddChild((new Behavior("Idle", "")));
            idle.AddChild(new Behavior("", "Use Computer"));
            idle.AddChild(new Behavior("", "Patrol"));

            Behavior Incoming = root.AddChild((new Behavior("Incoming Projectile", "")));
            Incoming.AddChild((new Behavior("", "Evade")));

            Behavior combat = root.AddChild((new Behavior("Combat", "")));
            Behavior Melee = combat.AddChild((new Behavior("Melee", "")));
            Melee.AddChild((new Behavior("", "Flee")));
            Melee.AddChild((new Behavior("", "Attack")));

            Behavior Ranged = combat.AddChild((new Behavior("Ranged", "")));
            Ranged.AddChild((new Behavior("", "Weapon 1")));
            Ranged.AddChild((new Behavior("", "Weapon 2")));
            Ranged.AddChild((new Behavior("", "Weapon 3")));
        }
示例#3
0
        Behavior search(Behavior child,string Value)
        {
            if (child.behavior == Value)
            {
                return child;
            }
            else if (child.HasChild)
            {

                foreach (Behavior b in child.Children)
                {
                    Behavior temp = search(b, Value);
                    if (temp != null)
                    {
                       // Console.WriteLine(temp);
                        if (temp.behavior == Value)
                        {

                            return temp;

                        }
                    }

                }
            }

                return null;
        }
示例#4
0
        Behavior Response(Behavior parent)
        {
            if (parent.HasChild) {

                Random ran = new Random ();
                int num = 	ran.Next (parent.Children.Count);

                return parent.Children [num];

            }

            return null;
        }
示例#5
0
 public Behavior AddChild(Behavior b)
 {
     Children.Add(b);
     return(b);
 }
示例#6
0
 public Behavior AddChild(Behavior b)
 {
     Children.Add(b);
     return b;
 }
示例#7
0
 /// <summary>
 /// Ends a sequence or selector.
 /// </summary>
 /// <returns>Behavior Tree builder state</returns>
 public BehaviorTreeBuilder End()
 {
     m_currentNode = parentNodeStack.Pop();
     return(this);
 }