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