本文整理汇总了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++;
}