gpt4 book ai didi

c++ - 如何在 for 循环中返回一个 boolean 值

转载 作者:行者123 更新时间:2023-11-28 05:10:42 25 4
gpt4 key购买 nike

当两个对象发生碰撞时,第一个函数调用将返回碰撞的字符串,因此我知道我的逻辑是正确的。然而, boolean 值的检查没有返回任何结果,所以我很困惑。

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"
}

}
}
};

当从 main 调用时,这不返回任何内容

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;

最佳答案

一旦您发现一个不匹配的对象,您的返回 false 就会发生。它需要在函数的下方 waaayyyyy - 在底部。一旦您检查了所有内容并且没有匹配项,那么您就可以说没有匹配项。

关于c++ - 如何在 for 循环中返回一个 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43566035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com