繁体   English   中英

有人可以解释一下为什么我的代码无法按我预期的方式工作吗? 弹球

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM