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

查看这个 RuneScape 体验表: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


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


交互式爱情
浏览 130回答 2
2回答

慕运维8079593

您可以拥有 X 倍经验等级。你只需取除法的整数部分。例如,如果 X=100:LVL1 = 100,LVL2 = 200;等等 ...在这种情况下,您只需:LVL = Experience / X;Ex: 100 / 100 = 1 LVL, 200 / 100 = 2 ... etcX 可以是任何数字。希望能帮助到你。

拉莫斯之舞

您可以使用二进制搜索来加快速度:private static final int[] experiences={83, 174, ...};int level(int experience) {&nbsp; &nbsp; // boundary check&nbsp; &nbsp; if (experience < experiences[0])&nbsp; &nbsp; &nbsp; &nbsp; return 0;&nbsp; &nbsp; if (experience >= experiences[experiences.length-1])&nbsp; &nbsp; &nbsp; &nbsp; return experiences.length;&nbsp; &nbsp; int minLevel = 0;&nbsp; &nbsp; int maxLevel = experiences.length;&nbsp; &nbsp; while (maxLevel - minLevel > 1) {&nbsp; &nbsp; &nbsp; &nbsp; int chk = (maxLevel+minLevel)/2;&nbsp; &nbsp; &nbsp; &nbsp; if (experience < experiences[chk])&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; maxLevel = chk;&nbsp; &nbsp; &nbsp; &nbsp; if (experience >= experiences[chk])&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minLevel = chk;&nbsp; &nbsp; }&nbsp; &nbsp; return maxLevel;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java