每次变量增加特定量时指定条件

时间:2017-06-01 12:11:06

标签: c

我正在制作一个简单的蛇游戏,这是一个返回变量的函数,该变量指定了另一个函数中使用的蛇的速度。它工作得非常好,但我想知道是否有办法将所有if条件包装成一个?每当get_score()值增加20时,我想使函数的返回整数值减少25。如果我的代码中的条件是前三个:

unsigned int get_speed(void) {
        if(get_score() < 20) {                  // spd increases by 25 as score gets higher (every 20 interval)
            return 600;
        } else if(get_score() < 40) {
            return 575;
        } else if(get_score() < 60) {
            return 550;
        }
}

1 个答案:

答案 0 :(得分:1)

虽然你的具体案例,正如Barmar在评论中所说的那样,可以通过简单的数学来最优雅地解决,但你明确地说“每次增加的条件”。

switch(get_score()/20) {
case 0: return 600;
case 1: return 575;
case 2: return 550;
}

请注意,在这种情况下,我不会在每个案例后中断,因为它们都是返回。如果您的病情没有恢复,您必须使用一个。

根据评论,我还将解释为什么我们的方法有效。处理整数类型时,CPU只会将额外的数字四舍五入。例如,“向下舍入到最接近的20”可以表示为x = x / 20 * 20。对于0 <= x < 80x/20只能等于0,1,2或3。