Ejemplo n.º 1
0
        public void testRandomMap()
        {
            List <IPosition_Connected_Edit> list = RandomIntPositions.generateRandomIntPositions(10, 10, 50, 2, 4, 16, 0.6, 0.3, 0.1);
            IPosition_Connected_Edit        adj;
            StringBuilder sb = new StringBuilder();

            //Console.WriteLine(open.Count);
            sb.AppendLine(list.Count.ToString());
            foreach (IPosition_Connected_Edit p in list)
            {
                //Console.Write(p.ToString()+"\t");
                sb.Append(p.ToString() + "\t");
                IPositionSet_Connected_AdjacencyEdit adjSet = p.GetAdjacencyPositionSetEdit();
                adjSet.InitToTraverseSet();
                while (adjSet.NextPosition())
                {
                    adj = adjSet.GetPosition_Connected_Edit();
                    //Console.Write(adj.ToString() + ":" + p.GetDistanceToAdjacency().ToString() + "\t");
                    sb.Append(adj.ToString() + ":" + adjSet.GetDistanceToAdjacency().ToString() + "\t");
                }
                //Console.WriteLine();
                sb.AppendLine();
            }
            Console.WriteLine(sb.ToString());
        }
Ejemplo n.º 2
0
        private void toolStripButton8_Click(object sender, EventArgs e)
        {
            IPosition_Connected_Edit p, adj;
            StringBuilder            sb = new StringBuilder();

            sb.AppendLine("Position:\tAdjacency:");
            for (int i = 0; i < mapWidth; i++)
            {
                for (int j = 0; j < mapHeight; j++)
                {
                    if (map.Exists(i, j))
                    {
                        p = map.GetPosition(i, j);
                        sb.Append(p.ToString());
                        sb.Append("\t");
                        IPositionSet_Connected_AdjacencyEdit adjSet = p.GetAdjacencyPositionSetEdit();
                        adjSet.InitToTraverseSet();
                        while (adjSet.NextPosition())
                        {
                            adj = adjSet.GetPosition_Connected_Edit();
                            sb.Append(adj.ToString() + ":" + adjSet.GetDistanceToAdjacency().ToString() + "\t");
                        }
                        sb.AppendLine();
                    }
                }
            }
            IPosition_Connected start = map.GetStartPosition();
            IPosition_Connected end   = map.GetEndPosition();

            if (start != null)
            {
                sb.Append("Start position:" + start.ToString());
            }
            if (end != null)
            {
                sb.Append("End position:" + end.ToString());
            }
            sb.AppendLine(SearchForPath(astar, false));
            if (path != null)
            {
                sb.AppendLine();
                sb.AppendLine("Path length:" + path.Count);
                foreach (IPosition_Connected iter in path)
                {
                    sb.Append(iter.ToString() + iter.GetAttachment().ToString() + "\t");
                }
            }
            infoForm.SetText(sb.ToString());
            infoForm.Show();
            infoForm.Activate();
            if (colorThePathToolStripMenuItem.Checked)
            {
                drawMap();
            }
        }
Ejemplo n.º 3
0
        public void RemovePosition_Connected(IPosition_Connected p)
        {
            IPositionSet_Connected_AdjacencyEdit adjSet = ((IPosition_Connected_Edit)p).GetAdjacencyPositionSetEdit();

            adjSet.InitToTraverseSet();
            while (adjSet.NextPosition())
            {
                IPosition_Connected_Edit adj = adjSet.GetPosition_Connected_Edit();
                adj.GetAdjacencyPositionSetEdit().RemoveAdjacency(p);
                adjSet.RemoveAdjacency(adj);
            }
            list.Remove(p);
        }
Ejemplo n.º 4
0
 public bool IsConnected(IPosition_Connected_Edit p1, IPosition_Connected_Edit p2)
 {
     if (p1 != null && p2 != null)
     {
         IPositionSet_Connected_AdjacencyEdit adjSet = p1.GetAdjacencyPositionSetEdit();
         adjSet.InitToTraverseSet();
         while (adjSet.NextPosition())
         {
             if (p2.Equals(adjSet.GetPosition_Connected_Edit()))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Ejemplo n.º 5
0
        public void RemovePosition(float x, float y)
        {
            IPosition_Connected_Edit p = FindPosition(x, y);

            if (p != null)
            {
                mapAry[(int)x, (int)y].Remove(p);
                list.Remove(p);

                IPositionSet_Connected_AdjacencyEdit adjSet = p.GetAdjacencyPositionSetEdit();
                adjSet.InitToTraverseSet();
                while (adjSet.NextPosition())
                {
                    IPosition_Connected_Edit adj = adjSet.GetPosition_Connected_Edit();
                    adj.GetAdjacencyPositionSetEdit().RemoveAdjacency(p);
                    adjSet.RemoveAdjacency(adj);
                }
            }
        }
Ejemplo n.º 6
0
        protected void drawMap()
        {
            buffer.Clear(panel1.BackColor);

            IPosition_Connected_Edit adj;

            //先画节点间连接,再画节点,让节点覆盖在连接上,看起来比较清晰
            foreach (IPosition_Connected_Edit p in map.GetPositionList())
            {
                IPositionSet_Connected_AdjacencyEdit adjSet = p.GetAdjacencyPositionSetEdit();
                adjSet.InitToTraverseSet();
                while (adjSet.NextPosition())
                {
                    adj = adjSet.GetPosition_Connected_Edit();
                    drawConnection(linePen, p.GetX(), p.GetY(), adj.GetX(), adj.GetY());
                }
            }
            foreach (IPosition_Connected_Edit p in map.GetPositionList())
            {
                drawNode(p.GetX(), p.GetY());
            }

            refreshTags();
        }