[英]Could someone please explain why my code is not working the way I expect it to be? Pinball
我试图用Java创建一个“弹球”,使框架内的球弹起,而我的下边缘反应却很怪异。 我的球没有跟随相反的方向,而是跟随底部边缘。
我相信代码中的错误在第三个代码块(带星号)内,但是我无法确定是什么原因造成的。
public void move(double rightEdge, double bottomEdge)
{
setX(getX()+ dx); // move horizontally
if(getX() >= rightEdge - getRadius()) //hit right edge
{
setX(rightEdge - getRadius());
dx = dx * -1;
}
if(getX() - getRadius() <= 0)
{
setX(getRadius());
dx= dx*-1;
}
setY(getY() + dy);
**if(getY() - getRadius() <=0)
{
setY(getRadius());
dy = dy * -1;
}**
if(getY() >= bottomEdge - getRadius());
{
setY(bottomEdge - getRadius());
dy = dy * -1;
}
}
if(getY() >= bottomEdge - getRadius()); <--remove this semicolon
{
setY(bottomEdge - getRadius());
dy = dy * -1;
}
您有一个额外的半冒号。 我建议您使用一种编码样式,使您的方括号与其所属的if语句保持在同一行。
if(something){
//code
}
不
if(something)
{
//code
}
我不确定这是否能解决您的问题,因为如果y值大于或等于bottomEdge-getRadius(),您似乎会将y值设置为bottomEdge。 因此,只要不触碰边缘,它只要保持触碰底部的边缘即可保持y值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.