计算基于文本的RPG的体验

时间:2014-08-14 14:38:26

标签: php algorithm

好的,使用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!"; }

注意:上面的代码只是我想要清楚。

我对如何扭转我创造的小混乱感到茫然。

1 个答案:

答案 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)