第一個函數調用將返回兩個對象發生碰撞時的字符串衝突,因此我知道我的邏輯是真實的。然而,布爾檢查沒有返回,所以我很難過。如何返回for循環中的布爾值
template <typename T, typename U>
void checkCollision(std::vector<T> &vTower, std::vector<U> &vMonster)
{
for (int i = 0; i < vMonster.size(); i++)
{
for (int k = 0; k < vTower.size(); k++)
{
if (vMonster[i].getPositionX() + vMonster[i].getRadius() +
vTower[k].getRadius() > vTower[k].getTowerRangePositionX()
&& vMonster[i].getPositionX() < vTower[k].getTowerRangePositionX() + vMonster[i].getRadius() + vTower[k].getRadius()
&& vMonster[i].getPositionY() + vMonster[i].getRadius() + vTower[k].getRadius() > vTower[k].getTowerRangePositionY()
&& vMonster[i].getPositionY() < vTower[k].getTowerRangePositionY() + vMonster[i].getRadius() + vTower[k].getRadius())
{
std::cout << "Collided"
}
}
}
};
這從主
bool checkCollision(std::vector<T> &vTower, std::vector<U> &vMonster)
{
for (int i = 0; i < vMonster.size(); i++)
{
for (int k = 0; k < vTower.size(); k++)
{
if (vMonster[i].getPositionX() + vMonster[i].getRadius() + vTower[k].getRadius() > vTower[k].getTowerRangePositionX()
&& vMonster[i].getPositionX() < vTower[k].getTowerRangePositionX() + vMonster[i].getRadius() + vTower[k].getRadius()
&& vMonster[i].getPositionY() + vMonster[i].getRadius() + vTower[k].getRadius() > vTower[k].getTowerRangePositionY()
&& vMonster[i].getPositionY() < vTower[k].getTowerRangePositionY() + vMonster[i].getRadius() + vTower[k].getRadius())
{
return true;
}
else
return false;
}
}
}
這是一個無休止的循環窗口調用時沒有返回。
if(function.checkCollision(myicetower, mymonsters))
std::cout << "TESTTESTTEST" << std::endl;
在第二個例子中,你只比較第一個怪物和第一個塔,因爲你總是從那個點返回。 – aschepler
請修復您的問題標題。讓它描述這個問題。其他人應該如何找到這個問題呢? –