Найти - Пользователи
Полная версия: Вопрос по функции def. Я дебич? Что я делаю не так?
Начало » Python для новичков » Вопрос по функции def. Я дебич? Что я делаю не так?
1
Bartol_47
Учу Python с нуля.
решил построить код по получению опыта, как в типичной RPG игре:

https://pastebin.com/fMCTsb2m

Как можно заметить, что с получением нового уровня, прибавляются очки обучения, здоровья и всё остальное. И с каждым новым LVLом эта инструкция повторяется. Только потом я узнал о замечательной функции DEF. Решил сократить кол-во строк. Ввёл в функцию повторяющиеся операции. Вышло как-то так:

https://pastebin.com/J7w1Vydr

Только проблема в том, что она нифига не работает. Какая-то из версий этого кода у меня работала, но она не изменяла локальных значений. Т.е. если опыт получался 805 (к примеру), то LVL = 2 и skill_point = 2.
Огромная просьба, подскажите что я делаю не так? Можно ли вообще def применять в этом примере?
xam1816
Читайте пространство имен и области видимости В вашем примере, в функции нужно указать, что переменные H_lvl, H_xp, skill_point, HEAL, VUN из глобального пространства

 H_lvl = 1
H_xp = 0
skill_point = 0
HEAL = 0
VUN = 0
#
def lvl_up():
    print("LEVEL UP!")
    global H_lvl, H_xp, skill_point, HEAL, VUN
    H_lvl += 1
    skill_point += 2
    HEAL += 10
    VUN += 10
    print("LVL: ", H_lvl)
    print("Очков доступно: ", skill_point)
#
while H_xp > (-1):
    up_xp = int(input("Вы получили опыт: "))
    H_xp += up_xp
    print("Ваш опыт: ", H_xp)
    if H_xp >= 100 and H_lvl == 1:
        lvl_up()
    if H_xp >= 400 and H_lvl == 2:
        lvl_up()
    if H_xp >= 800 and H_lvl == 3:
        lvl_up()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB