如何使用公式确定下一级?

时间:2013-04-06 22:58:12

标签: php equation

感谢您提供的任何帮助。

如果我们有:

$level = floor((-1 + sqrt(1 + 4 * ($c_xp + 500) / 100 * 2)) / 2) - 1; //GET LEVEL

例如:

$c_xp = 1200

然后:

$level = 4

然后我问是否:

$level = 4

达到5级需要多少xp?

如何获得达到下一级所需的xp数量?

3 个答案:

答案 0 :(得分:2)

获得达到$ level级别所需的最小XP的公式由下式给出:

$minXP = 12.5 * (pow((2 * $level + 3), 2) - 41);

所以你可以设置$ level = 5和$ level = 4并找出它们之间的差异。

答案 1 :(得分:1)

分析:

我运行了一个脚本来查看每个级别所需的XP:

$current_level = 0;
for($c_xp = 1;$c_xp < 7000;$c_xp++){
    $level = floor((-1 + sqrt(1 + 4 * ($c_xp + 500) / 100 * 2)) / 2) - 1; //GET LEVEL
    if($level > $current_level){
        $current_level++;
        echo "c_xp $c_xp level $level<br>";
    }
}

输出结果为:

c_xp 1 level 1
c_xp 100 level 2
c_xp 500 level 3
c_xp 1000 level 4
c_xp 1600 level 5
c_xp 2300 level 6
c_xp 3100 level 7
c_xp 4000 level 8
c_xp 5000 level 9
c_xp 6100 level 10

我们可以看到级别1是一个例外,然后XP从级别2到级别3的差异是400,从级别3到级别4:500和级别4到级别5:600等等...... 现在模式很清楚,

等级1 - &gt; 1 XP

等级2 - &gt;启动100 XP

等级3 - &gt;增加400(500 XP)

等级4 - &gt;增加(400 + 100)1000XP

等级5到等级X - &gt;继续增加100


代码:

通过上面的分析,我可以在函数中找到一个循环:

$c_xp = 1200;
$level = floor((-1 + sqrt(1 + 4 * ($c_xp + 500) / 100 * 2)) / 2) - 1;

echo 'Next level: '.current_level_xp($level+1).'<br>';
echo 'XP needed for next Level: '. (current_level_xp($level+1) - $c_xp);

function current_level_xp($current_level){
    if($current_level <= 1){
        return(1);
    }else{
        $increase = 400;
        $needed = 100;
        for($i=0;$i<$current_level-2;$i++){
            $needed += $increase;
            $increase += 100;
        }
        return $needed;
    }
}

<强>输出:

Next level: 1600
XP needed for next Level: 400

答案 2 :(得分:0)

使用您选择的数学/公式绘图工具来了解所使用的公式的结果(可能不是您的公式):

enter image description here

现在,甚至可能有一种方法可以改变将y翻译成x的公式。但我不确定是否有floor反转。