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