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;code

//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;
}
相關文章
相關標籤/搜索