我正在尝试为游戏制作一个JavaScript计算器。像大多数获得经验的游戏一样,有水平系统。
因此,对于给定的经验数量,我希望计算水平。
现在我已经很难实现这一目标了。
if(experience < level2Experience){
level = 1;
} else if(experience >= level2Experience && experience < level3Experience){
level = 2;
} else if(experience >= level3Experience && experience < level4Experience){
level = 3;
}
等等。
是否有更简洁,更省力的方法来实现同样的目标?
答案 0 :(得分:1)
// levels:
// level 1 => 0 points to 9
// level 2 => 10 points to 19
// ....
var levels = [0,10, 20, 30];
var level = 0;
var experience = 22;
levels.forEach((v, i) => {
if(experience >= v) {
level = i+1;
}
});
console.log(level);
&#13;
答案 1 :(得分:0)
您可以采取许多方法来执行此操作。以下是一些建议。
1)如果你只是想让代码看起来更好,你可以写一个类似于这个的帮助器
function isBetween(n, lower, upper) { return n >= lower && n <= upper };
2)如果levelxExperience是一个有限集并且你不关心优化它,你可以将所有levelxExperience存储在这样的数组中(其中index指的是level)
var expArray = [level2Experience, level3Experience];
那么你可以通过简单地从后面迭代来获得关卡
var i = expArray.length - 1;
var level;
while ( i >=0 ) {
if (experience > expArray[i]) {
level = i;
break;
}
i--;
}
// console.log(level);
答案 2 :(得分:0)
我在想,当你在计算水平时,根据经验,你有一个特定的公式。 这种经验公式将基于玩家执行的任务类型,从而获得经验。 取决于随着玩家升级而从一个级别增长到另一个级别所需的经验数量的变化,可以有3种可能的实现。第一和第二可以使用某种数学函数自动化。 例如:
1)当一个人升级时,从一个级别增长到另一个级别所需的经验保持不变。 在某种意义上,这意味着如果一个人有100 xp,他是1级,如果他有200,那么他是2级,依此类推。 这可以转换为数学公式,其中级别仅由函数
定义level = experience/100
2)从一个级别增长到另一个级别所需的经验数量随着某些变量的变化而变化。 例如,如果从0级到1级所需的经验是100,但是从1级到2级是1000.那么我们可以设计一个数学公式来计算系列的总和,并看到1级的人将会拥有至少100或更多经验,它将小于1000 xp。 这可以存储在如下函数中:
var lower_xp_limit = 0
, upper_xp_limit = 0
, level_count = 0;
while(player_xp < upper_xp_limit)
{
lower_xp_limit = 10^level_count*1;
upper_xp_limit = 10^(level_count+2)*1;
level_count++;
}
return level_count-1;
3)如果有不同的随机经验值来确定等级。 然后你可以做一个简单的开关案例,它打破或实现一个for循环,使数据与一个元素数组相匹配。