在我的应用程序中,我得到一个包含 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;

最佳答案

我不知道你是如何计算级别的,但假设你有一个函数 level($n) ,它返回需要多少 XP 才能拥有级别 $n

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

关于php - 如何使用算法真正计算关卡进度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6368735/

10-12 14:13