【问题标题】:Game logic - Add score only once after passing obstacle游戏逻辑 - 通过障碍物后仅添加一次分数
【发布时间】:2016-10-05 18:13:56
【问题描述】:

我正在创建一款评分系统类似于 Flappy Bird 中的游戏。

if you didn't get it

当玩家成功通过左右 障碍我希望我的分数变量增加 1。不过我不知道它背后的逻辑。

现在我有(这是在 for 循环中检查更新方法中的每个障碍):

'over' 确保分数只增加 1。

if (bird.getPosition().y > obstacle.getPosLeft().y) {
  if (!over) {
    over = true;
    score++;
  }

当障碍物离开屏幕时(是的,y 在底部是 0,而不是顶部):

if (obstacle.getPosLeft().y + Obstacle.OBSTACLE_HEIGHT < 0){
  obstacle.reposition(obstacle.getPosLeft().y + (OBSTACLE_SPACING + Obstacle.OBSTACLE_HEIGHT)* OBSTACLE_COUNT);
  over = false;
}

问题是您可以在第一个障碍物对重新定位之前通过 2 个障碍物对,这意味着您只能在 reposition() 被称为障碍物 1 之后获得第二个点。

你会如何解决这个问题?

【问题讨论】:

  • 如果你只使用score++ 而不是if 语句会怎样?
  • 如果我越过任何障碍,它只会在每个刻度上增加分数。我的意思是,你会得到很多分数(这很酷),但这不是我想做的。
  • 你能不能在越过障碍物的时候叫reposition right?由于您已经通过了障碍物,您不再关心它,因此您可以重新定位它。试试看。
  • 那么障碍物基本上会被删除,因为它只是重新定位到屏幕上方。我希望它在离开屏幕时重新定位,给人一种有许多障碍物在玩家身上下雨的错觉。当玩家通过它时它就消失了,这很愚蠢。你和我在一起吗?如果我没有任何意义,请告诉我。
  • 是的,你的解释很清楚。你是如何获得障碍的?如果有两个,你有两个障碍变量,还是只有两个 Obstacle 类的实例?

标签: java logic


【解决方案1】:

只需创建一个“obstacle.over”布尔值,以便每个都有自己的状态。

【讨论】:

  • 哦,是的,我完全忘记了每个障碍都有自己的变量。愚蠢的我。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2011-02-10
相关资源
最近更新 更多