资源简介
cocox3.15.12.zip
代码片段和文件信息
#include “Astar.h“
struct Astar::AstartNode
{
//此节点在堆中的位置
int iHeapPosition = -1;
int iG = -1;
int iH = -1;
int iF = -1;
//检测是否可以通过
int iColor = -1;
//检测是否在开启列表中
int isOpen = 0;
Astar::VecInt father;
int getF(){ return iH + iG; }
};
void Astar::cHeap::removeFront(Astar::AstartNode**g_Map)
{
if (vecs.size() == 0)
return;
g_Map[vecs[vecs.size() - 1].x][vecs[vecs.size() - 1].y].iHeapPosition = 0;
g_Map[vecs[0].x][vecs[0].y].iHeapPosition = -1;
vecs[0] = vecs[vecs.size() - 1]; //用最后一个元素把第一个元素覆盖掉,即为删除
vecs.pop_back(); //删除容器尾巴元素
int currentIndex = 0;
while (currentIndex < vecs.size()) //把新的堆首元素放在堆中适当的位置
{
int leftChildIndex = 2 * currentIndex + 1;
int rightChildIndex = 2 * currentIndex + 2;
//已经到最底层,结束
if (rightChildIndex > vecs.size())
break;
int minIndex = leftChildIndex;
//有两个孩子,找出两个孩子节点中F值最低的元素
if (rightChildIndex g_Map[vecs[rightChildIndex].x][vecs[rightChildIndex].y].getF()))
{
minIndex = rightChildIndex;
}
//如果当前节点的F值 大于 他孩子节点的F值,则交换
if (g_Map[vecs[currentIndex].x][vecs[currentIndex].y].getF() > g_Map[vecs[minIndex].x][vecs[minIndex].y].getF())
{
VecInt temp = vecs[minIndex];
vecs[minIndex] = vecs[currentIndex];
vecs[currentIndex] = temp;
//同步保存地图中该坐标在堆中的最新位置
g_Map[vecs[currentIndex].x][vecs[currentIndex].y].iHeapPosition = currentIndex;
g_Map[vecs[minIndex].x][vecs[minIndex].y].iHeapPosition = minIndex;
currentIndex = minIndex;
}
else
{
break;
}
}
}
void Astar::cHeap::push_back(const VecInt& element Astar::AstartNode**g_Map)
{
vecs.push_back(element);//把新节点添加到堆的末尾
int currentIndex = vecs.size() - 1;
g_Map[vecs[currentIndex].x][vecs[currentIndex].y].iHeapPosition = currentIndex; //保存该坐标在堆中的位置
while (currentIndex > 0) //不断的与他的父节点比较,直到该新节点的F值大于他的父节点的F值为止 或者 该新节点到了堆首
{
int parentIndex = (currentIndex - 1) / 2;
if (g_Map[vecs[currentIndex].x][vecs[currentIndex].y].getF() < g_Map[vecs[parentIndex].x][vecs[parentIndex].y].getF())
{
VecInt temp = vecs[currentIndex];
vecs[currentIndex] = vecs[parentIndex];
vecs[parentIndex] = temp;
//同步保存地图中该坐标在堆中的最新位置
g_Map[vecs[currentIndex].x][vecs[currentIndex].y].iHeapPosition = currentIndex;
g_Map[vecs[parentIndex].x][vecs[parentIndex].y].iHeapPosition = parentIndex;
currentIndex = parentIndex;
continue;
}
else
{
break;
}
}
}
void Astar::cHeap::newHeap(int position Astar::AstartNode**g_Map)
{
int currentIndex = position;
int parentIndex;
//while (currentIndex > 0) //如果该元素新的F值比他的父节点的F值小,交换
//{
// parentIndex = (currentIndex - 1) / 2;
// if (g_Map[v[currentIndex].sx][v[currentIndex].sy].getF() < g_Map[v[parentIndex].sx][v[parentIndex].sy].getF())
// {
// Coordinate temp = v[currentIndex];
// v[currentIndex] = v[parentIndex];
// v[parentIndex] = temp;
// g_Map[v[
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-09-30 05:02 cocox3.15.1\ba
文件 1111 2017-07-04 12:12 cocox3.15.1\ba
文件 11015 2017-07-04 12:12 cocox3.15.1\ba
文件 1330 2017-07-04 12:12 cocox3.15.1\ba
文件 375 2017-07-04 12:12 cocox3.15.1\ba
文件 3176 2017-07-04 12:12 cocox3.15.1\ba
文件 280 2017-07-04 12:12 cocox3.15.1\ba
文件 431 2017-07-04 12:12 cocox3.15.1\ba
文件 6608 2017-07-04 12:12 cocox3.15.1\ba
文件 155 2017-07-04 12:12 cocox3.15.1\ba
文件 817 2017-07-04 12:12 cocox3.15.1\ba
文件 146 2017-07-04 12:12 cocox3.15.1\ba
文件 3924 2017-07-04 12:12 cocox3.15.1\ba
文件 1274 2017-07-04 12:12 cocox3.15.1\ba
文件 1308 2017-07-04 12:12 cocox3.15.1\ba
文件 372809 2017-07-04 12:12 cocox3.15.1\ba
文件 420 2017-07-04 12:12 cocox3.15.1\ba
目录 0 2017-09-30 05:02 cocox3.15.1\coco\
文件 1871 2017-07-04 12:12 cocox3.15.1\coco\ccc.h
文件 1193 2017-07-04 12:12 cocox3.15.1\coco\cfg2.cpp
文件 463 2017-07-04 12:12 cocox3.15.1\coco\cfg2.h
文件 10462 2017-09-30 03:26 cocox3.15.1\coco\cocoMacro.h
目录 0 2017-09-30 05:02 cocox3.15.1\cocos\
目录 0 2017-09-30 05:02 cocox3.15.1\cocos\2d\
文件 7692 2017-05-04 09:54 cocox3.15.1\cocos\2d\CCAction.cpp
文件 13793 2017-09-29 17:33 cocox3.15.1\cocos\2d\CCAction.h
文件 6529 2017-05-04 09:54 cocox3.15.1\cocos\2d\CCActionCamera.cpp
文件 5057 2017-05-04 09:54 cocox3.15.1\cocos\2d\CCActionCamera.h
文件 13955 2017-05-04 09:54 cocox3.15.1\cocos\2d\CCActionCatmullRom.cpp
文件 9878 2017-05-04 09:54 cocox3.15.1\cocos\2d\CCActionCatmullRom.h
文件 10009 2017-09-30 04:08 cocox3.15.1\cocos\2d\CCActionEase.cpp
............此处省略739个文件信息
相关资源
- GBT32904-2016软件质量量化评价规范.pd
- 2_92db705d4eb9907ce548ff4798a7d0fc.pdf
- 问卷调查系统1.0.9.zip
- 6t1kyl.rar
- Tebo-ICT.rar
- 网软天下组织部党建网站系统正式版
- GBT34120-2017《电化学储能系统储能变流
- 秘密录屏软件.rar
- 冰点文库器v3.2.4.zip
- DataNumen破解版.zip
- SVPWM详解.pdf
- 码上点餐8.0.1.zip
- 5414534微擎拼团3.8开源版.zip
- od和CE查找call基址教材.rar
- carNumber.rar
- 信工所各个实验室复试的经验帖收集
- 《离散数学教程》习题解答beta16[1][
- qn1gf9.pdf
- online_testck163.rar
- BS家庭理财系统的设计实现.rar
- ComputationalScienceandEngineeringByGilbertStr
- TouchExplor.rar
- 中华会计网校会计人员继续教育挂机
- GBT21063-2007政务信息资源目录体系(完
- 百度网盘批量转存工具2.3附详细使用
- CSIIHERCULES平台技术交流v2.0.pdf
- 52695064ext-2.2.zip
- GBT21061-2007国家电子政务网络技术和运
- Control.rar
- 信道建模与仿真.doc
评论
共有 条评论