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

时间:2018-08-13 12:35:54

标签: java loops math syntax numbers

查看此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 个答案:

答案 0 :(得分:0)

您可以将经验等级乘以X。而你只需要除法的整数部分。

如果X = 100,则

Ex:LVL1 = 100,LVL2 = 200;等等

在这种情况下,您只能:

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

X可以是任何数字。

希望有帮助。

答案 1 :(得分:0)

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

from requests import Session
from requests.exceptions import HTTPError

class TestGet:
    __session = None

    __username = None
    __password = None

    def __init__(self, username, password):
        self.__username = username
        self.__password = password

    @property
    def session(self):
        if self.__session is None:
            self.__session = Session()
            self.__session.auth = (self.__user, self.__pwd)

        return self.__session

    @session.setter
    def session(self, value):
        raise AttributeError('Setting \'session\' attribute is prohibited.')

    def get_response(self, url):
        try:
            response = self.session.get(url)

            # raises if the status code is an error - 4xx, 5xx
            response.raise_for_status()

            return response
        except HTTPError as e:
            # you received an http error .. handle it here (e contains the request and response)
            pass

test_get = TestGet('my_user', 'my_pass')
first_response = test_get.get_response('http://your-website-with-basic-auth.com')
second_response = test_get.get_response('http://another-url.com')

my_session = test_get.session
my_session.get('http://url.com')