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


C++ LayerManager::draw方法代码示例

本文整理汇总了C++中LayerManager::draw方法的典型用法代码示例。如果您正苦于以下问题:C++ LayerManager::draw方法的具体用法?C++ LayerManager::draw怎么用?C++ LayerManager::draw使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在LayerManager的用法示例。


在下文中一共展示了LayerManager::draw方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Element


//.........这里部分代码省略.........
				onclick(*i, lbutton);
				clicDansLeVide = false;
				break;
			}
		}

		if(lbutton && clicDansLeVide) unselect();
	}

	if(!lbutton && !rbutton) clicked = false;






	// Dessin du réticule pour la cellule selectionnée
	if(selectedCell != NULL)
	{
		reticule.setColor(sf::Color::Green);
		reticule.setPosition(selectedCell->getPosition());
		reticule.rotate(2);
		float scale = (100+abs(((frame/4)%40)-20)) / 100.f;
		reticule.setScale( scale * selectedCell->getScale() * 5.f );
	}
	else
	{
		reticule.setColor(sf::Color::Transparent);
	}


	// Suppression des agents inactifs
	for(std::vector<Agent*>::iterator i = agents.begin(); i != agents.end();)
	{
		if( !(*i)->isAlive() )
		{
			delete (*i);
			layerAgent.removeElement(*i);
			i = agents.erase(i);
		}
		else i++;
	}



	// Conditions de victoire et pre-check pour l'AI
	int nbPositive = 0;
	int nbNegative = 0;
	int nbNeutre = 0;
	for(std::vector<Cell*>::iterator i = cells.begin(); i != cells.end(); i++)
	{
		if( (*i)->getValue() > 0 ) nbPositive++;
		if( (*i)->getValue() < 0 ) nbNegative++;
		if( (*i)->getValue() == 0 ) nbNeutre++;
	}
	if(nbPositive == 0) lose = true;
	if(nbNegative == 0) win = true;


	// Boucle AI
	for(std::vector<Cell*>::iterator i = cells.begin(); i != cells.end(); i++)
	{
		if( (*i)->getValue() < 0 )
		{
			int intervalBetweenAttacks = ((120 /*+ rand()%60*/) /*- (*i)->getValue()*3*/ + nbNegative*50);

			if((*i)->getLastAttack() == 0) (*i)->setLastAttack(frame);
			if(frame - (*i)->getLastAttack() > intervalBetweenAttacks)
			{
				(*i)->setLastAttack(frame);

				// Opérations très lourdes mais osef total vu les perfs du jeu
				std::vector<Cell*> targets = cells;
				std::sort(targets.begin(), targets.end(), AI::SortFunctor((*i)));
				std::remove_if(targets.begin(), targets.end(), AI::RemoveFunctor((*i)));

				if(targets.size() > 0)
				{
					int target = rand() % min(3, (int)targets.size());

					Agent* a = new Agent(10, *(*i), *(targets[target]));
					agents.push_back(a);
					layerAgent.addElement(a);
				}
			}

		}
	}

	// Fond rouge
	int red = 90+abs(((frame/4)%60)-30);
	window.clear(sf::Color(red, 22, 22));


	layerManager.update(frame);
	layerManager.draw(window);
	window.display();

	frame++;
}
开发者ID:Lord-Nazdar,项目名称:GameaNiaque,代码行数:101,代码来源:step3.cpp


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