本文整理汇总了C++中AStar::pathFinding方法的典型用法代码示例。如果您正苦于以下问题:C++ AStar::pathFinding方法的具体用法?C++ AStar::pathFinding怎么用?C++ AStar::pathFinding使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AStar
的用法示例。
在下文中一共展示了AStar::pathFinding方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
int * PlaceJoueur::placeJoueur(int ** carte, int largeur,int hauteur, int* peuple, int nbJoueurs)
{
vector< vector<Coordonnees> > tabZones;
for(int i=0;i<nbJoueurs;i++)
{
vector<Coordonnees> tmp = findZone(carte,largeur,hauteur,peuple[i]);
tabZones.push_back(tmp);
}
vector<Coordonnees> zoneAccessible = getUnion(tabZones);
int * coord = new int[2*nbJoueurs];
Coordonnees coordJ1, coordJ2;
int max=0;
AStar * star = new AStar();
vector<Coordonnees>::iterator it = zoneAccessible.begin();
for(;it!=zoneAccessible.end();it++)
{
vector<Coordonnees>::iterator it2 = zoneAccessible.begin();
for(;it2!=zoneAccessible.end();it2++)
{
if (!(*it==*it2))
{
if (verif[peuple[0]][carte[(*it).x()][(*it).y()]])
{
vector<Node*>* res = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[0],largeur,hauteur,(*it),(*it2));
if (res->size()>max)
{
max=res->size();
coordJ1 = (*it);
coordJ2 = (*it2);
}
}
}
}
}
coord[0]=coordJ1.x();
coord[1]=coordJ1.y();
coord[2] = coordJ2.x();
coord[3] = coordJ2.y();
Coordonnees coordJ3;
if (nbJoueurs>=3)
{
bool ok = false;
int sigmaRef = 2;
while (!ok)
{
double max=0;
vector<Coordonnees>::iterator it = zoneAccessible.begin();
for(;it!=zoneAccessible.end();it++)
{
if (!((*it) == coordJ1 || (*it) == coordJ2))
{
if (verif[peuple[2]][carte[(*it).x()][(*it).y()]])
{
vector<Node*>* res = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[2],largeur,hauteur,(*it),(coordJ1));
vector<Node*>* res2 = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[2],largeur,hauteur,(*it),(coordJ2));
if (std::abs((int)res->size()-(int)res2->size())<=2 && (res->size()+res2->size())/2>max)
{
max=(res->size()+res2->size())/2;
coordJ3 = (*it);
ok = true;
}
}
}
}
sigmaRef++;
}
coord[4] = coordJ3.x();
coord[5] = coordJ3.y();
if (nbJoueurs==4)
{
Coordonnees coordJ4;
bool ok = false;
int sigmaRef = 3;
while (!ok)
{
double max=0;
vector<Coordonnees>::iterator it = zoneAccessible.begin();
for(;it!=zoneAccessible.end();it++)
{
if (!((*it) == coordJ1 || (*it) == coordJ2 || (*it) == coordJ3))
{
if (verif[peuple[3]][carte[(*it).x()][(*it).y()]])
{
vector<Node*>* res = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[3],largeur,hauteur,(*it),(coordJ1));
vector<Node*>* res2 = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[3],largeur,hauteur,(*it),(coordJ2));
vector<Node*>* res3 = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[3],largeur,hauteur,(*it),(coordJ3));
int sigtmp1 = std::abs((int)res->size()-(int)res2->size());
int sigtmp2 = std::abs((int)res2->size()-(int)res3->size());
int sigtmp3 = std::abs((int)res->size()-(int)res3->size());
if ((sigtmp1+sigtmp2+sigtmp3)/3<=sigmaRef && (res->size()+res2->size()+res3->size())/3>max)
//.........这里部分代码省略.........