有人可以解释为什么我的代码没有按照我期望的方式工作吗?弹球
Could someone please explain why my code is not working the way I expect it to be? Pinball
我正在尝试在 Java 中创建一个 "pinball" 以在框架内反射球的图像,但我的底部边缘反应非常奇怪。我的球没有向相反的方向发送,而是沿着底部边缘。
我认为代码中的错误在第三个块(标有星号)内,但我无法确定是什么原因造成的。
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(如果它大于或等于 bottomEdge - getRadius())。因此,它不会从边缘弹起,而是在您触及底部边缘后保持该 y 值。
我正在尝试在 Java 中创建一个 "pinball" 以在框架内反射球的图像,但我的底部边缘反应非常奇怪。我的球没有向相反的方向发送,而是沿着底部边缘。
我认为代码中的错误在第三个块(标有星号)内,但我无法确定是什么原因造成的。
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(如果它大于或等于 bottomEdge - getRadius())。因此,它不会从边缘弹起,而是在您触及底部边缘后保持该 y 值。