//初始化地图,在地图被更改之后调用 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); } }
//初始化地图,在地图被更改之后调用 public void InitEngineForMap(IPositionSet_Connected map) { positionSet = map; IPosition_Connected p; //初始化 positionSet.InitToTraverseSet(); while (positionSet.NextPosition()) { p = positionSet.GetPosition_Connected(); p.SetAttachment(new Tag()); } }
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); }
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()); } }