本文整理汇总了C#中Heap.extract方法的典型用法代码示例。如果您正苦于以下问题:C# Heap.extract方法的具体用法?C# Heap.extract怎么用?C# Heap.extract使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Heap
的用法示例。
在下文中一共展示了Heap.extract方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: findPath
//uses A* to find path
private void findPath(GridNode start, GridNode end)
{
Stopwatch watch = new Stopwatch();
watch.Start();
Heap<GridNode> heap = new Heap<GridNode>(gameGrid.gridHeight*gameGrid.gridLength);
Dictionary<GridNode,int> costSoFar = new Dictionary<GridNode,int>();
Dictionary<GridNode,GridNode> cameFrom = new Dictionary<GridNode,GridNode>();
HashSet<GridNode> closed = new HashSet<GridNode>();
heap.insert (start);
costSoFar.Add(start, 0);
while(heap.Count > 0){
GridNode current = heap.extract();
closed.Add (current);
if(current.Equals(end)){
retraceRoute(start,current,cameFrom);
heap.Clear ();
watch.Stop();
print (watch.ElapsedMilliseconds);
}else{
List<GridNode> list = gameGrid.getNeighbours(current);
foreach(GridNode node in list){
if(!node.isBlock && !closed.Contains(node)){
int cost = costSoFar[current] + gameGrid.getDistanceBetween(current,node);
if(!costSoFar.ContainsKey (node) || cost < costSoFar[node]){
costSoFar.Remove (node);
costSoFar.Add (node,cost);
node.score = cost + gameGrid.getHeuristic(node, end);
heap.insert (node);
cameFrom.Remove (node);
cameFrom.Add (node, current);
}
}
}
}
}
explored = new HashSet<GridNode>(closed);
}