查看此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
尽管我不知道如何反向工程以找到关卡
答案 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')