void foodAgainstCreatures(vector<creature>& displayCreatures, vector<Food>& displayFood)
{
bool hungry = true;
int differenceInX = 0;
int differenceInY = 0;
for (unsigned int j = 0; j < displayCreatures.size(); j++)
{
hungry = true;
for (unsigned int i = 0; i < displayFood.size(); i++)
{
differenceInX = displayCreatures[j].getXValue() - displayFood[i].getXValue();
differenceInY = displayCreatures[j].getYValue() - displayFood[i].getYValue();
if ((differenceInX <= 5 && differenceInX >= -5) && (differenceInY <= 5 && differenceInY >= -5))
{
displayCreatures[j].addToEnergy(3);
displayFood.erase(displayFood.begin() + i);
hungry = false;
}
else
{
if (displayCreatures[j].getEnergy() == 0)
{
displayCreatures.erase(displayCreatures.begin() + j);
}
}
}
if (hungry == true)
{
displayCreatures[j].addToEnergy(-1);
}
}
}
//一次“生物”,“吃”是“食品”,它获得的“能量”的正常工作有什么我需要是再帮消除已经从载体中“吃掉”的“食物”。我可以在循环内做到这一点吗?怎样才能从我的矢量删除元素,而在for循环C++
是一个天使,并使用std :: size_t而不是unsigned int作为循环计数器。 – Bathsheba
哈哈我会做谢谢你 – KPullet
你的问题描述是缺乏。无论如何,将你想要保留的元素复制到一个新的矢量并与前一个交换相比更容易。如果您不认为移除元素会改变其他元素,以及对您的循环有什么影响。另外,请查看右边相关问题的列表,你的这些并不新鲜。 –