Python, преобразователь XP в уровень - PullRequest
0 голосов
/ 03 февраля 2019

, так что я в основном пытаюсь преобразовать XP игроков в число уровней, я просто задаюсь вопросом, есть ли более эффективный способ / аккуратный способ, так как это выглядит ужасно и по сравнению с чем-то похоже, что требуется время, так как он должен был запустить каждого элифа,Приветствия.

# XP to Level converter
    if self.xp >= "0":
        self.level = "Level 0"
    elif self.xp >= "1000":
        self.level = "Level 1"
    elif self.xp >= "3000":
        self.level = "Level 2"
    elif self.xp >= "5000":
        self.level = "Level 3"
    elif self.xp >= "7500":
        self.level = "Level 4"
    elif self.xp >= "10000":
        self.level = "Level 5"
    elif self.xp >= "13000":
        self.level = "Level 6"
    elif self.xp >= "15000":
        self.level = "Level 7"
    elif self.xp >= "20000":
        self.level = "Level 8"
    elif self.xp >= "25000":
        self.level = "Level 9"
    elif self.xp >= "30000":
        self.level = "Level 10"
    elif self.xp >= "35000":
        self.level = "Level 11"
    elif self.xp >= "41000":
        self.level = "Level 12"
    elif self.xp >= "47500":
        self.level = "Level 13"
    elif self.xp >= "52500":
        self.level = "Level 14"
    elif self.xp >= "60000":
        self.level = "Level 15"
    elif self.xp >= "68000":
        self.level = "Level 16"
    elif self.xp >= "76500":
        self.level = "Level 17"
    elif self.xp >= "85500":
        self.level = "Level 18"
    elif self.xp >= "95000":
        self.level = "Level 19"
    elif self.xp >= "105000":
        self.level = "Level 20"
    elif self.xp >= "115000":
        self.level = "MAX LEVEL"
    else:
        self.level = "Level Could Not Be Converted"

    print(self.level)

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Если вы хотите, чтобы уровни происходили с регулярными приращениями (например, последовательно каждые 5000 xp), вы можете использовать что-то простое и быстрое:

# Defined at the top, easily modifiable this way
max_level = 21
xp_per_level = 5000

...

level_number = self.xp // xp_per_level
self.level = f"Level {level_number}" if level_number < max_level else "MAX LEVEL"

Вы можете вкладывать вышеуказанное поведение в подобное элифк тому, что вы уже сделали, и используйте эту технику, чтобы первые 10 уровней масштабировались на 500 очков опыта за уровень, и, возможно, следующие 10 требуют 1000 очков опыта и т. д.

0 голосов
/ 03 февраля 2019

Вы можете использовать массивы для точек уровня

xp = 7600

limit = [0,1000,3000,5000,7500,10000]
level = -1

for points in limit:
    if xp > points:
        level = level + 1
    else:
        break

print(level)
...