Форум сайта python.su
Учу Python с нуля.
решил построить код по получению опыта, как в типичной RPG игре:
https://pastebin.com/fMCTsb2m
Как можно заметить, что с получением нового уровня, прибавляются очки обучения, здоровья и всё остальное. И с каждым новым LVLом эта инструкция повторяется. Только потом я узнал о замечательной функции DEF. Решил сократить кол-во строк. Ввёл в функцию повторяющиеся операции. Вышло как-то так:
https://pastebin.com/J7w1Vydr
Только проблема в том, что она нифига не работает. Какая-то из версий этого кода у меня работала, но она не изменяла локальных значений. Т.е. если опыт получался 805 (к примеру), то LVL = 2 и skill_point = 2.
Огромная просьба, подскажите что я делаю не так? Можно ли вообще def применять в этом примере?
Офлайн
Читайте пространство имен и области видимости В вашем примере, в функции нужно указать, что переменные 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()
Офлайн