示例#1
0
        //初始化地图,在地图被更改之后调用
        public void InitEngineForMap(IPositionSet_Connected map)
        {
            positionSet = map;
            IPosition_Connected p;

            //初始化
            positionSet.InitToTraverseSet();
            while (positionSet.NextPosition())
            {
                p = positionSet.GetPosition_Connected();
                p.SetAttachment(new Tag());
            }

            int num = (int)(Math.Sqrt((double)positionSet.GetNum()));

            path = new List <IPosition_Connected>(num * 2);

            if (num > 0)
            {
                open = new PriorityQueue <IPosition_Connected>(num * 4, com);
            }
            else
            {
                open = new PriorityQueue <IPosition_Connected>(com);
            }
        }
示例#2
0
        //初始化地图,在地图被更改之后调用
        public void InitEngineForMap(IPositionSet_Connected map)
        {
            positionSet = map;
            IPosition_Connected p;

            //初始化
            positionSet.InitToTraverseSet();
            while (positionSet.NextPosition())
            {
                p = positionSet.GetPosition_Connected();
                p.SetAttachment(new Tag());
            }
        }
示例#3
0
        bool Init(IPosition_Connected start, IPosition_Connected end)
        {
            IPosition_Connected p;
            Tag tag;

            //初始化
            positionSet.InitToTraverseSet();
            while (positionSet.NextPosition())
            {
                p = positionSet.GetPosition_Connected();
                if (dict.TryGetValue(p, out tag))
                {
                    tag.Clear();
                }
                else
                {
                    dict.Add(p, new Tag());
                    open.add(p);
                }
            }

            //判断起点和终点是否在地图上,并初始化起点的标签
            if (dict.TryGetValue(start, out tag))
            {
                tag.g      = 0;
                tag.parent = null;
            }
            else
            {
                return(false);
            }
            if (!dict.TryGetValue(end, out tag))
            {
                return(false);
            }

            //更新起点在候选队列中的位置
            open.remove(start);
            open.add(start);
            return(true);
        }
示例#4
0
        public void InitEngineForMap(IPositionSet_Connected map)
        {
            positionSet = map;
            IPosition_Connected p;
            Tag tag;

            //初始化
            dict.Clear();
            open.clear();
            positionSet.InitToTraverseSet();
            while (positionSet.NextPosition())
            {
                p = positionSet.GetPosition_Connected();
                if (dict.TryGetValue(p, out tag))
                {
                    dict.Remove(p);
                }
                open.add(p);
                dict.Add(p, new Tag());
            }
        }