无法隐式转换“bool”;到“int” - 碰撞检测

发布于 2024-09-14 23:58:58 字数 456 浏览 2 评论 0原文

我正在尝试为足球比赛制作一个简单的碰撞检测类。代码如下:

int Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)  
{  
    int dx = x2 - x1;  
    int dy = y2 - y1;  
    int radii = radius1 + radius2;  
    if ((dx*dy)+(dy*dy)< radii * radii)  
    {  
        return true;  
    }  
    else  
    {  
        return false;  
    }  
}  

问题在于代码返回 true 或 false。 Visual Studio 说它无法将 bool 隐式转换为 int,我明白这一点,但我该如何修复它? 感谢您的任何帮助。

I am trying to make a simple collision detection class for a soccer game. Here is the code:

int Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)  
{  
    int dx = x2 - x1;  
    int dy = y2 - y1;  
    int radii = radius1 + radius2;  
    if ((dx*dy)+(dy*dy)< radii * radii)  
    {  
        return true;  
    }  
    else  
    {  
        return false;  
    }  
}  

The problem is with the code returning true or false. Visual Studio says it cannot implicitly convert bool to int, and I understand that, but how can I fix it?
Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

三寸金莲 2024-09-21 23:58:58

如果您需要返回 true/false 变量,您应该将第一行更改为:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2) {

If you need to return a true/false variable, you should change your first line to this:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2) {
要走干脆点 2024-09-21 23:58:58

像这样定义您的函数:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)

现在您可以返回 truefalse。如果保留int,那么您需要返回一个整数值,例如01,但这并不能表达函数意图。

您还可以稍微缩短代码:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)  
{  
    int dx = x2 - x1;  
    int dy = y2 - y1;  
    int radii = radius1 + radius2;  
    return ((dx * dy) + (dy * dy) < radii * radii);
}

Define your function like this:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)

Now you can return true or false. If you keep int then you need to return an integer value such as 0 and 1 but this doesn't express the function intent.

You could also shorten your code a bit:

bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)  
{  
    int dx = x2 - x1;  
    int dy = y2 - y1;  
    int radii = radius1 + radius2;  
    return ((dx * dy) + (dy * dy) < radii * radii);
}
天涯沦落人 2024-09-21 23:58:58

不要忘记修复你的算法。
((dx***dy**)+(dy*dy)<半径*半径)
应该是:
((dx***dx**)+(dy*dy)< 半径 * 半径)

正当你想到:唷!我修复了 int/bool 的问题,你会得到一堆误报。

Don't forget to fix your algorithm.
((dx***dy**)+(dy*dy)< radii * radii)
should be:
((dx***dx**)+(dy*dy)< radii * radii)

Just when you think: Whew! I fixed that int/bool thing,, you get a bunch of false positives.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文