所以我想避免输入9999可能的结果做这样的事情:
if($experience==50) {echo 'level 2'; }
if($experience==300) {echo 'level 3'; }
if($experience==700) {echo 'level 4'; }
if($experience==1000) {echo 'level 5'; }
有办法吗?所以是的,我希望有人可以帮助我!
编辑:最高等级为99,所以我还要检查
if($level == 1 && $experience >= 50) { echo 'level 2';}
答案 0 :(得分:5)
简短的回答:你不能。
答案很长:你必须在某处创建体验地图。在代码或设置文件/数据库中。系统不能神奇地知道如何将体验映射到关卡,而不告诉它如何。
然而,你可以做的是创建一个关于水平如何与经验联系的公式,然后它只是一个小的计算,你就完成了。
答案 1 :(得分:0)
同意@Ztripez HellströmYou's
回答。你需要某种数学公式,我会做类似的事情:
$level = 1;
// level up after every 50 * $currentLevel xp gained
if ($experience >= 50 && $experience % (50*$level) == 0 && $level <= 99) {
$level++;
}
echo 'Level: ' . $level;
所以上面会产生以下结果:
$level = 1;
$experience = 50;
After if condition, $level = 2
$level = 2;
$experience = 95;
After if condition, $level = 2 //not increased
$level = 2;
$experience = 100;
After if condition, 100 % (50*2) == 0 ? true - $level = 3
etc...
注意:确保将XP点数增加5倍,这样就不会超过阈值。或者将其增加50
的倍数或10
的倍数。
答案 2 :(得分:0)
通常,EXP级阈值是根据某种公式计算的。通常这个公式本质上是指数式的,所以你可能有类似的东西:
$base = 50;
$growth = 1.2;
$maxlevel = 100;
$levelthresholds = array();
for( $i=0; $i<$maxlevel; $i++) $levelthresholds[$i] = $base*$i*pow($growth,$i-1);
// the above is a formula I've used in many places, it works quite well
基本费率将是您的第2级EXP,然后增长是您将基本费率乘以多少以获得下一个级别。使用1.2
,您将获得:
等级1:0
等级2:50
3级:120
等级4:216
等级5:345
...
您可以根据需要调整$base
和$growth
费率。您还可以使用较低的$base
,round
结果,然后乘以100
来获得漂亮的舍入数字。
这里的要点是确定EXP的公式,因为这会大大减少您必须编写的代码量。完成后,您可以这样做:
for( $level = 0; $level < $maxlevel; $level++) {
if( $levelthresholds[$level] > $experience) break;
}
$level++; // result should be 1-based