为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

交互式爱情 2021-07-08 14:36:07
查看这个 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虽然我不知道如何逆向工程以找到水平
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您可以拥有 X 倍经验等级。你只需取除法的整数部分。


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


在这种情况下,您只需:


LVL = Experience / X;

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

X 可以是任何数字。


希望能帮助到你。


查看完整回答
反对 回复 2021-07-14
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

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


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;

}


查看完整回答
反对 回复 2021-07-14
  • 2 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信