Esempio n. 1
0
 public bool CompareTo(VectorPoint pointToCompare)
 {
     if (this.m_x == pointToCompare.m_x && this.m_y == pointToCompare.m_y && this.m_Direction == pointToCompare.m_Direction)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        public NotBinerySearchTree(int[,] curMaze, VectorPoint[] vectors, VectorPoint startPoint, VectorPoint endPoint)
        {
            m_Size = 0;
            m_Maze = curMaze;
            this.addNode((startPoint.m_x * 100 + startPoint.m_y) * startPoint.m_Direction, startPoint);
            List <VectorPoint> listVector = vectors.ToList <VectorPoint>();

            endPoint.m_Direction = 5;
            //m_EndNode = new Node((100 * endPoint.m_x + endPoint.m_y) * endPoint.m_Direction, endPoint, 50, m_RootNode);
            listVector.Add(endPoint);



            addVectorNode(listVector);
        }
        private Node AddVectorNode(Node curNode, VectorPoint vector)
        {
            if (m_RootNode == null)
            {
                return(new Node((vector.m_x * 100 + vector.m_y) * vector.m_Direction, vector, this.m_Size + 1, m_RootNode));
            }

            Node addNode = new Node((vector.m_x * 100 + vector.m_y) * vector.m_Direction, vector, this.m_Size + 1, m_RootNode);

            if (curNode != null && addNode != null && m_RootNode != null)
            {
                bool addedVector = false;
                switch (curNode.getObj(2).m_Direction)
                {
                case 1:
                    if (curNode.getObj(2).m_y - 1 == addNode.getObj(2).m_y)
                    {
                        Console.WriteLine("Node Added");
                        curNode.addChildNode(addNode);
                        addedVector = true;
                        return(m_RootNode);
                    }
                    break;

                case 2:
                    if (curNode.getObj(2).m_y + 1 == addNode.getObj(2).m_y)
                    {
                        Console.WriteLine("Node Added");
                        curNode.addChildNode(addNode);
                        addedVector = true;
                        return(m_RootNode);
                    }
                    break;

                case 3:
                    if (curNode.getObj(2).m_x - 1 == addNode.getObj(2).m_x)
                    {
                        Console.WriteLine("Node Added");
                        curNode.addChildNode(addNode);
                        addedVector = true;
                        return(m_RootNode);
                    }
                    break;

                case 4:
                    if (curNode.getObj(2).m_x + 1 == addNode.getObj(2).m_x)
                    {
                        Console.WriteLine("Node Added");
                        curNode.addChildNode(addNode);
                        addedVector = true;
                        return(m_RootNode);
                    }
                    break;

                default:
                    return(m_RootNode);
                }



                if (curNode.getChildren() != null && !addedVector)
                {
                    foreach (Node nodes in curNode.getChildren())
                    {
                        return(AddVectorNode(nodes, vector));
                    }
                }
                else
                {
                    return(m_RootNode);
                }
            }
            else
            {
                return(m_RootNode);
            }
            return(m_RootNode);
        }
 public void addVectorNode(VectorPoint vector)
 {
     this.m_Size = this.m_Size++;
     m_RootNode  = AddVectorNode(m_RootNode, vector);
 }