php游戏,根据exp计算水平的公式

2022-08-31 00:09:29

我正在制作一个基于浏览器的PHP游戏,在我的数据库中,它为玩家提供了该玩家总EXP或经验的记录。

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

所以他们从1级开始,当他们达到50级时,进入2级,然后当他们达到125/150时,达到2级。

基本上是一个公式,可以稳步地使每个级别更长(更多exp)

任何人都可以帮忙吗?我不太擅长数学:P


答案 1

许多公式可能适合您的需求,具体取决于您希望所需 exp 上升的速度。

事实上,你真的应该让它可配置(或者至少在一个中心位置很容易地改变),这样你以后就可以平衡游戏。在大多数游戏中,这些(和其他)公式只有在尝试几个选项之后才能确定。playtesting

这里有一个公式:第一次升级发生在50 exp;第二名在150exp;第三在300 exp;第四在500 exp;等。换句话说,首先你必须收集50 exp,然后是100 exp,然后是150exp,依此类推。这是一个算术级数

对于升级,你需要exp。X25*X*(1+X)

添加:反过来,你只需要使用基本的数学。喜欢这个:

y=25*X*(1+X)
0=25*X*X+25*X-y

这是一个标准的二次方程,你可以用以下公式求解X:

X = (-25±sqrt(625+100y))/50

现在,由于我们希望 X 和 Y 都大于 0,因此我们可以删除其中一个答案,并留下:

X = (sqrt(625+100y)-25)/50

因此,例如,如果我们有300 exp,我们会看到:

(sqrt(625+100*300)-25)/50 = (sqrt(30625)-25)/50 = (175-25)/50 = 150/50 = 3

现在,这是第3,所以这意味着4级。


答案 2

如果您想要以下各项:

  • 等级 1 @ 0 点
  • 2 级 @ 50 分
  • 3 级 @ 150 分
  • 等级 4 @ 300 积分
  • 等级 5 @ 500 点等

将经验 (X) 与水平 (L) 相关联的等式为:

X = 25 * L * L - 25 * L

要计算给定经验的水平,请使用二次方程得到:

L = (25 + sqrt(25 * 25 - 4 * 25 * (-X) ))/ (2 * 25)

这简化为:

L = (25 + sqrt(625 + 100 * X)) / 50

然后使用 floor 函数向下舍入,以获得最终公式:

L = floor(25 + sqrt(625 + 100 * X)) / 50

其中 L 是级别,X 是经验值


推荐