php 随着等级越高经验值越多 代码

设Xn为n级所需经验值,令An=Xn+1-Xn;则An为等差数列
X1=3; X2=7;
A1=X2-X1=4;
An=A1+(n-1)d =n+3;
Sn=(A1+An)n/2=(n+7)n/2;
Xn=(Xn-Xn-1)+(Xn-1-Xn-2)+...(X2-X1)+X1=Sn-1+X1=(n+6)
(n-1)/2+3;
(n+6)
(n-1)-2
Xn+6=0;
n²+5n-2Xn=0;
n=(-5+根号(25+8*Xn))/2;

//echo getLevelByXP(100000);
echo "\r\n";
echo getLevelByXP2(100000);


function getLevelByXP($xp){
    return floor((-5+sqrt(25+8*$xp))/2);
}

function getLevelByXP2($xp){

    $level=1;
    $j=1;//起始经验值 间隔值
    $min=3;
    $i=1;//等级
    $before=0;//上一级经验值
    for($i=1;$i<100;$i++){
        $j+=1;
        $j=$j>7?7:$j;
        $before=$before==0?$min:$before+$j;
        if($xp>=$before){
            $level=$i;
        }
       // echo "Level=",$i,"XP=",$before;
        //echo "\r\n";
    }
    return $level;
}

转载于:https://my.oschina.net/u/554046/blog/781176

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值