我正在制作一个简单的蛇游戏,这是一个返回变量的函数,该变量指定了另一个函数中使用的蛇的速度。它工作得非常好,但我想知道是否有办法将所有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;
}
}
答案 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 < 80
,x/20
只能等于0,1,2或3。