• 大小: 4.97M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-17
  • 语言: 其他
  • 标签: 其他  

资源简介

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\base\
     文件        1111  2017-07-04 12:12  cocox3.15.1\base\asert.h
     文件       11015  2017-07-04 12:12  cocox3.15.1\base\Astar.cpp
     文件        1330  2017-07-04 12:12  cocox3.15.1\base\Astar.h
     文件         375  2017-07-04 12:12  cocox3.15.1\base\cfg.cpp
     文件        3176  2017-07-04 12:12  cocox3.15.1\base\cfg.h
     文件         280  2017-07-04 12:12  cocox3.15.1\base\cppstruct.cpp
     文件         431  2017-07-04 12:12  cocox3.15.1\base\cppstruct.h
     文件        6608  2017-07-04 12:12  cocox3.15.1\base\efolder.cpp
     文件         155  2017-07-04 12:12  cocox3.15.1\base\efolder.h
     文件         817  2017-07-04 12:12  cocox3.15.1\base\logic.cpp
     文件         146  2017-07-04 12:12  cocox3.15.1\base\logic.h
     文件        3924  2017-07-04 12:12  cocox3.15.1\base\stringutils.cpp
     文件        1274  2017-07-04 12:12  cocox3.15.1\base\stringutils.h
     文件        1308  2017-07-04 12:12  cocox3.15.1\base\template.h
     文件      372809  2017-07-04 12:12  cocox3.15.1\base\utf.cpp
     文件         420  2017-07-04 12:12  cocox3.15.1\base\utf.h
     目录           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个文件信息

评论

共有 条评论