通过经验值相关性计算数字



看看这个符文景观体验表:http://runescape.wikia.com/wiki/Experience/Table

您可以看到经验值数量与"等级"相关

哪里:

if (xp < 83){
level = 0;
}
else if (xp >= 83 && xp < 174){
level = 1;
}
//etc

因此,当我仅将体验保存为玩家的字段时,如何计算他们经验的等级?

无需循环遍历 100 个经验值整数。

即我不想这样做:(因为玩家会有很多关卡,这意味着这需要循环多次(

for (int i =0; i < 100) {
if (playersExperience < experienceRequiredForLevel(i){
return i;
}

也许有一种更快的方法可以做到这一点?

编辑: 这里有一个公式可以计算 X 级的经验:

rsdo.net/rsdonline/guides/Experience%20formula.html

虽然我不知道如何对其进行逆向工程以找到水平

你可以有一个乘数X的经验水平。你只需要除法的整数部分。

例如,如果 X=100:LVL1 = 100,LVL2 = 200;等等......

在这种情况下,您只能:

LVL = Experience / X;
Ex: 100 / 100 = 1 LVL, 200 / 100 = 2 ... etc

X 可以是任意数字。

希望对您有所帮助。

您可以使用二进制搜索来加快速度:

private static final int[] experiences={83, 174, ...};
int level(int experience) {
// boundary check
if (experience < experiences[0])
return 0;
if (experience >= experiences[experiences.length-1])
return experiences.length;
int minLevel = 0;
int maxLevel = experiences.length;
while (maxLevel - minLevel > 1) {
int chk = (maxLevel+minLevel)/2;
if (experience < experiences[chk])
maxLevel = chk;
if (experience >= experiences[chk])
minLevel = chk;
}
return maxLevel;
}

最新更新