当前位置: 首页>>代码示例>>C++>>正文


C++ AStar::pathFinding方法代码示例

本文整理汇总了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)
//.........这里部分代码省略.........
开发者ID:BenjBoug,项目名称:INSA-SmallWorld,代码行数:101,代码来源:PlaceJoueur.cpp


注:本文中的AStar::pathFinding方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。