无法隐式转换“bool”;到“int” - 碰撞检测
我正在尝试为足球比赛制作一个简单的碰撞检测类。代码如下:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您需要返回 true/false 变量,您应该将第一行更改为:
If you need to return a true/false variable, you should change your first line to this:
像这样定义您的函数:
现在您可以返回
true
或false
。如果保留int
,那么您需要返回一个整数值,例如0
和1
,但这并不能表达函数意图。您还可以稍微缩短代码:
Define your function like this:
Now you can return
true
orfalse
. If you keepint
then you need to return an integer value such as0
and1
but this doesn't express the function intent.You could also shorten your code a bit:
不要忘记修复你的算法。
((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.