如何检查何时整数增加超过数字的倍数?

时间:2015-02-10 05:01:36

标签: objective-c

我做了一个游戏,玩家可以根据他们取出的敌人类型获得3或5分。我想增加每次玩家得分达到50的倍数时产生的最大敌人数。

这是我到目前为止所得到的(位于调整分数的方法中):

if (self.score % 50 == 0)
        {
            if (self.maxEnemiesA <= 20)
            {
                self.maxEnemiesA++;
            }
        }

代码检测分数何时达到50的倍数,但由于分数是两个不同增量的组合,因此可能会超过该目标。

e.g。如果分数为148然后增加5,则将跳过150并变为153.

不是检查分数是否为50的倍数,而是如何检测分数传递 50的倍数的那一刻?

3 个答案:

答案 0 :(得分:1)

简单:

// Let BASE_ENEMIES be the starting number of enemies, when the score is
// less than 50.
self.maxEnemiesA = MIN(20, BASE_ENEMIES + self.score / 50);

答案 1 :(得分:0)

好吧,我宁愿注册你增加数字的点数。在变量中设置当前分数,并检查它是否增加了50以上

if (self.score >= previousScore + 50) 
{

      previousScore = self.score;
      if (self.maxEnemiesA <= 20)
      {
            self.maxEnemiesA++;
      }

}

答案 2 :(得分:0)

在您做出任何增量之前和之后检查分数。

NSInteger oldStep = self.score / 50;
// Code that increments self.score as needed
NSInteger newStep = self.score / 50;
if (newStep > oldStep) {
    // The score has increased into a new multiple of 50
}

示例:如果分数目前为148,则oldStep将为2.如果您将分数增加到153,newStep将为3。