PHP - 避免输入多行

时间:2014-06-03 16:12:45

标签: php

所以我想避免输入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';}

3 个答案:

答案 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费率。您还可以使用较低的$baseround结果,然后乘以100来获得漂亮的舍入数字。

这里的要点是确定EXP的公式,因为这会大大减少您必须编写的代码量。完成后,您可以这样做:

for( $level = 0; $level < $maxlevel; $level++) {
    if( $levelthresholds[$level] > $experience) break;
}
$level++; // result should be 1-based