好的,使用at this question以上的答案我能够生成以下代码来计算我正在处理的基于文本的RPG所需的体验。我会从一开始就说我的数学技能不是很好,所以请尽可能地“愚蠢”。
function calcExp($L) {
if($L <= 5) {
//If Level 5 or less then just 12 exp per level
return 12*$L;
}
if($L > 1000) {
//If over level 1,000, we need to slow them down
//add an additional 500k per level required
$calc = $L - 1000;
$c2 = 500000*$calc;
return (5*$L*$L-5*$L)+$c2;
}
else {
//otherwise, calculate as follows
$exp = 5 * $L * $L - 5 * $L;
return $exp;
}
}
这会返回正确的经验,现在我正试图弄清楚如何扭转这个过程,以便我可以checkLvl($EXPERIENCE)
并让它返回它应该处于的水平。
那么如果我要
$level = 10;
$exp = 450;
$check = checkLvl($exp);
if($check != $level) { die('Unknown Error'); }
else { echo "Success!"; }
注意:上面的代码只是我想要清楚。
我对如何扭转我创造的小混乱感到茫然。
答案 0 :(得分:0)
你的前五个级别只是每个级别的tweleve exp,所以你可以反转并说前60个exp(5 * 12)应该是floor($exp / 12)
你的第二级别范围是6到1000.因此,如果exp大于60,但小于1000级所需的exp,那么你需要解决$exp = 5 * $L * $L - 5 * $L
$ L,这是二次方程。它看起来像$L = (5 + sqrt(25 - 4 * 5 * -$exp)) / (2 * 5)
1000以上的其他所有内容都应该解决类似的二次方程,{L}的$exp = (5 * $L * $L - 5 * $L) + 500000 * ($L - 1000)
。它看起来像$L = ((5 + 500000) + sqrt((5 + 500000)^2 - 4 * 5 * (500000 - $exp))) / (2 * 5)