首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >php游戏,基于exp计算关卡的公式

php游戏,基于exp计算关卡的公式
EN

Stack Overflow用户
提问于 2011-08-05 18:25:24
回答 5查看 28.6K关注 0票数 16

我正在制作一个基于浏览器的PHP游戏,在我的数据库中的球员,它有一个球员的总经验或经验的记录。

我需要的是一个公式,以转换为一个级别或排名,从100。

所以他们从第一级开始,当他们点击50exp时,进入第二级,然后当他们达到125/150,第二级。

基本上是一个稳定地使每个关卡更长的公式(更多经验)

有人能帮上忙吗?我数学不是很好。

EN

回答 5

Stack Overflow用户

发布于 2011-08-05 18:56:04

这真的取决于您希望exp如何针对每个级别进行扩展。比方说

代码语言:javascript
复制
LvL1 : 50 Xp
Lvl2: LvL1*2=100Xp
LvL3: LvL2*2=200Xp
Lvl4: LvL3*2=400Xp

这意味着你有一个几何级数,完成级别n所需的Xp是

代码语言:javascript
复制
`XPn=base*Q^(n-1)`

在我的示例中,基数是初始的50XP,Q是2(比率)。

假设玩家在没有xp的情况下从lvl1开始:

代码语言:javascript
复制
when he dings lvl2 he would have 50 total Xp
at  lvl3 150xp
at  lvl4 350xp

以此类推,当玩家达到新的级别时,他拥有的总经验将是:

代码语言:javascript
复制
 base*(Q^n-1)/(Q-1)

在你的例子中,你已经知道玩家有多少经验。当比率为2时,公式会变得更简单:

代码语言:javascript
复制
base * (2^n-1)=total xp at level n

要找出给定xp值的级别,您只需应用一个简单的公式

代码语言:javascript
复制
$playerLevel=floor(log($playerXp/50+1,2));

但随着几何级数的增长,玩家的水平会变得越来越难。

要显示下一级所需的XP,您可以只计算下一级的总XP。

代码语言:javascript
复制
$totalXpNextLevel=50*(pow(2,$playerLevel+1)-1);
$reqXp=$totalXpNextLevel - $playerXp;

查看帖子的开头:要从lvl1 -> lvl2获取,您需要50 xp lvl2 ->lvl3 100xp

要从lvl x转换到lvl(x+1),您需要

代码语言:javascript
复制
$totalXprequired=50*pow(2,$playerLevel-1);
票数 6
EN

Stack Overflow用户

发布于 2011-08-05 19:59:06

谷歌给了我这个:

代码语言:javascript
复制
function experience($L) {
 $a=0;
  for($x=1; $x<$L; $x++) {
    $a += floor($x+300*pow(2, ($x/7)));
  }
 return floor($a/4);
}

for($L=1;$L<100;$L++) {
 echo 'Level '.$L.': '.experience($L).'<br />';
}

假设这是RuneScape使用的公式,您可以根据需要对其进行修改。输出示例:

代码语言:javascript
复制
Level 1: 0
Level 2: 55
Level 3: 116
Level 4: 184
Level 5: 259
Level 6: 343
Level 7: 435
Level 8: 536
Level 9: 649
Level 10: 773
票数 2
EN

Stack Overflow用户

发布于 2012-07-27 19:58:44

这是我用来解决类似问题的快速解决方案。当然,您可能想要更改数学,但它将为您提供总和xp的级别。

代码语言:javascript
复制
    $n = -1;
    $L = 0;

    while($n < $xp){
        $n += pow(($L+1),3)+30*pow(($L+1),2)+30*($L+1)-50;
        $L++;
    }

    echo("Current XP: " .$xp);
    echo("Current Level: ".$L);
    echo("Next Level: " .$n);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6954874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档