如何使用算法真正计算级别进度?

时间:2011-06-16 07:55:15

标签: php math

在我的应用程序中,我得到一个包含int的var $curxp,现在我想创建一个自动返回$xplvlup的函数(它保存一个int,下一个级别需要多少XP总量)以及返回当前级别的函数。

现在我可以简单地使用switch语句和计算出的数字进行硬编码,如:

switch($curxp){
    case <10: $xplvlup = 10; break;
}

但是如果我能使用算法那么它会更好,因此没有最高级别。 我知道我必须与指数合作才能得到一个好的曲线,但我只是不知道如何开始。

更新

感谢Oltarus,我找到了以下解决方案:

$curxp = 20;

function level($lvl){
    return $xp = pow($lvl,2) + 5 * $lvl;
}

$lvl = 0;
while (level($lvl) < $curxp) $lvl++;
$totxp = level($lvl);
$xplvlup = level($lvl) - $curxp;

echo 'Level: '.$lvl."<br />";
echo 'Total XP: '.$totxp."<br />";
echo 'XP needed for Levelup: '.$xplvlup;

2 个答案:

答案 0 :(得分:2)

例如,如果您的第一个级别需要500 xp,那么每个级别你需要多10%的xp,你可以这样做:

function xp_needed($cur_lvl){

    $start = 500;
    return   $start*pow(1.1,($cur_lvl-1));

}

对于每个级别,xp由500 * 1.1^(level-1)

计算

修改

Woops,$cur_lvl应减去1。

答案 1 :(得分:1)

我不知道你是如何计算水平的,但是假设你有一个函数level($n),它可以返回需要多少XP来获得等级$n

$n = 0;
while (level($n) < $curxp) $n++;
$xplvlup = level($n) - $curxp;