看看这个符文景观体验表: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;
}