资源简介
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个文件信息
相关资源
- PID_AutoTune_v0.rar
- vspd7.2.308.zip
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
评论
共有 条评论