有人可以解释为什么我的代码没有按照我期望的方式工作吗?弹球

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 值。