【问题标题】:Checking for same condition with incremented value over and over again一遍又一遍地检查具有递增值的相同条件
【发布时间】:2013-02-05 21:57:17
【问题描述】:

我目前正在用 Java 创建一个非常基本的 RPG 游戏。我目前正在处理碰撞,这让我想到了碰撞检查和我的问题:

是否可以检查 'foo' 上的条件,并且 'foo' 增加了很多次而不会造成这样的混乱

if(!Level.getTile((x) / 16, (y-8) / 16).solid() && !Level.getTile((x+1) / 16, (y-8) / 16).solid() && !Level.getTile((x+2) / 16, (y-8) / 16).solid())

【问题讨论】:

  • 如果 ` foo + 1 foo < getTile(x, y).x 也是如此。为什么需要同时测试两者?
  • 我从我的代码中添加了“真实场景”

标签: java integer range conditional-statements increment


【解决方案1】:

这完全取决于方法Level.getTile 和solid。根据它的工作方式,可能有一个有效的实现

boolean Level.isAnyTileSolid(int y, int x, ....)

即采用一个 y 值和多个 x 值的方法。

【讨论】:

  • 让我用一个更简单的例子:if(x != foo &amp;&amp; x + 1 != foo &amp;&amp; x + 2 != foo)... 我只是想听听它是否可能
  • 如果 x 是 int,则 if (foo &lt; x || foo &gt; x+2)
  • 仍然不是我要找的东西,看看我的问题中的场景:我想确保玩家将被瓷砖的每个像素停止,即 16 像素。这就是为什么我想检查它是否确实没有与 16 个像素中的任何一个发生碰撞
  • 这正是我要解释的——你需要实现更高级别的操作,语言不能为你做。
猜你喜欢
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 2017-02-15
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多