坏的exp计算功能?

时间:2011-09-23 13:59:26

标签: php exp

这个功能有什么问题?当我为exp使用31时,此函数变为无限循环!我该如何解决这个问题?如果可以,请帮助并优化此功能,谢谢。

public function exp_calc($exp)
    {
        $level2 = 30; // Required EXP for 2nd level
        $current_lvl = 0; // Current level
        $level = 0; // Required EXP for next level

        while((int)$level <= $exp)
        {
            $level += $level2;
            $level2 *= 0.25;
            $current_lvl++;
        }

        if($current_lvl >= 80)
            $current_lvl = 80;

        return array ($current_lvl, (int)$level);
    }

2 个答案:

答案 0 :(得分:3)

$level2 *= 0.25;

 1   2     3
30 7.5 1.125

我认为你的意思是* = 1.25,以指数级增加下一级所需的经验数量:)。

我认为当前函数限制在40以下(获得一些微积分来计算限制;))。

编辑;澄清(因为我虽然还没有):

第一级现在需要30个; 二级需要7.5额外的exp;总计37.5 三级需要1.125 exp;总计38.625 等

使用时* = 1.25;达到下一个级别所需的exp数量实际上增加了: 30 -> 37.5 -> 46.875 -> 58.594 -> etc

答案 1 :(得分:1)

我不确定你想要的结果是什么,但它成为一个无限循环的原因是每次迭代你使$ level2变小(其大小的四分之一),直到最终它实际上变为0。不会退出,直到$ level与$ exp一样大(或等于),一旦$ level2变为0,这将永远不会发生。没有做数学我猜31是$ level2变得太小时永远无法达到的阈值增加。