【问题标题】:How do I use an if statement to run except when something else has happened?除非发生其他事情,否则如何使用 if 语句运行?
【发布时间】:2017-08-05 11:07:30
【问题描述】:

我正在使用 Java 在一个盒子周围运行球。通过使用这段代码,它会从边缘反弹。

if (y >= borderBottom)
{
  y = border;
  speedOfY = -speedofY;
}

我的球盒上有一个洞。如果球击中球洞,我希望球继续穿过空隙。

我希望 if 语句一直运行到:

  • 它在 x(洞)上的两点之间

  • 在 y 轴的边界底部(孔的一侧)。

我怎样才能做到这一点?我知道我需要使用simulation.pauseSimulation() 但我不知道如何让球在两点之间和边界底部时特别停止,谢谢!

之后我尝试过使用前面的语句,

if(y >= borderBottom && (x < 275) && (x > 325>))
  simulation.pauseSimulation()
  

但我玩过,模拟忽略了整个底部边框,并且在某一时刻所有对象都闪烁了。

【问题讨论】:

  • 跟踪前一个球的位置,如果检测到球刚刚落到底部,检查两个球位置之间的直线是否越过边界段?
  • 你能告诉我们你的尝试吗?
  • @bipll 我用过 if (y >= borderBottom && (x 325>)) simulation.pauseSimulation() 但问题是我需要这个语句来覆盖如果所有条件都满足,则另作声明。这可能吗?
  • hmmm...x 不能同时 小于 275 和 大于 325 — 是你确定你的价值观没有颠倒吗?

标签: java if-statement bluej


【解决方案1】:

现在可能是学习逻辑运算符(&&、&、||、|、!、^)的好时机。特别是在这种情况下:

if (Condition A && Condition B)
{
   //Do something 
}

你也可以使用:

if(Condition A || Condition B)
{
    //Do something
}

【讨论】:

  • 可能也是。
【解决方案2】:

首先,您需要知道孔的底部和顶部坐标。 之后,你可以简单地写:

if ( y >= borderBottom || ( y < holeBottom && y > holeTop ) ) {
    Simulation.pauseSimulation();
    //You can pause simulation or do anything you prefer
}

【讨论】:

    猜你喜欢
    • 2015-05-17
    • 2012-05-01
    • 2015-09-30
    • 2021-01-14
    • 2015-09-28
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多