【发布时间】:2014-10-08 06:26:55
【问题描述】:
好的,使用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!"; }
注意:上面的代码只是我想清楚。
我不知道如何扭转我造成的小混乱。
【问题讨论】:
-
哇,几秒钟内就投了反对票。有什么特别的原因吗?
-
你为你尝试过什么checkLvl方法?你能把 calcExp 的数学计算出来,然后解一个代数方程吗?
-
@BrianJ - 根据我链接类似 floor(12 + sqrt(12 * 12 - 4 * 12 * (-$exp) ))/ 12 的答案应该反转它,但不会甚至接近;加入我对 1000 所做的修改,我完全不知道如何扭转它。
-
@Solstice - 如果我明白你在寻找什么......你只需要对你所拥有的条件进行逆向工程。因此,您需要检查一下 XP 是否为 60 或更低;看看它是否超过(呃)4,995,000;然后进行适当的计算。
-
@andrewsi - 是的,我把它弄得太复杂了。想太多,睡眠不足哈哈谢谢!