Уведомления

Группа в Telegram: @pythonsu

#1 Март 27, 2022 16:44:45

Bartol_47
Зарегистрирован: 2022-03-23
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по функции def. Я дебич? Что я делаю не так?

Учу Python с нуля.
решил построить код по получению опыта, как в типичной RPG игре:

https://pastebin.com/fMCTsb2m

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

https://pastebin.com/J7w1Vydr

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

Офлайн

#2 Март 27, 2022 20:53:22

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1393
Репутация: +  124  -
Профиль   Отправить e-mail  

Вопрос по функции 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()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version