Есть ли способ определить полный блок кода в качестве переменной в качестве замены функции перехода на python? - PullRequest
0 голосов
/ 02 августа 2020

Это то, что у меня есть. В трех точках («Конец милосердия», «Бегство» и «Остальное») я хочу, чтобы он oop вернулся в меню действий. Однако я не знаю, как это сделать. Я новичок в программировании, поэтому буду очень признателен за примеры.

ATK=5
DEF=2
MHP=40
MATK=5

print("A Monster approaches you!")
print("Fight, Mercy, Flee")

a=input("Act:")
if a == "Fight":
    MNHP=MHP-ATK
    MHP=MNHP
    print("You hit the enemy for ", ATK, " damage!")
    print("Enemy HP remaining: ", MHP)
elif a == "Mercy":
    print("You tried to spare the enemy...")
    if(MHP<15):
        print("You won!")
        print("You gained 0 EXP and 5 G")
    else:
        NHP=HP-MATK
        HP=NHP
        print("But the Monster wasn't weakened enough.")
        print("You lost ", MATK, "HP. HP remaining: ", HP)
elif a == "Flee":
    print("You tried to flee... But the overworld is missing.")
else:
    print("That's not an option.")```

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Всем спасибо за помощь и поддержку. Я считаю, что после небольшой настройки я решил свою проблему. Это не самый красивый фрагмент кода, но он выполняет свою работу.

HP=20
ATK=5
DEF=2
MHP=40
MATK=5

print("A Monster approaches you!")

while HP>0:
    print(" ")
    print("Fight, Mercy, Flee, Heal")
    
    a=input("Act:")
    if a == "Fight":
        MNHP=MHP-ATK
        MHP=MNHP
        if(MHP<=0):
            print(" ")
            print("You won!")
            print("You gained 7EXP and 2G")
            break
        else:
            print(" ")
            print("You hit the enemy for ", ATK, " damage!")
            print("Enemy HP remaining: ", MHP)
            print(" ")
            NHP=HP-MATK
            HP=NHP
            print("You lost ", MATK, "HP. HP remaining: ", HP)
    elif a == "Mercy":
        print(" ")
        print("You tried to spare the enemy...")
        if(MHP<15):
            print("You won!")
            print("You gained 0 EXP and 5 G")
            break
        else:
            print(" ")
            NHP=HP-MATK
            HP=NHP
            print("But the Monster wasn't weakened enough.")
            print("You lost ", MATK, "HP. HP remaining: ", HP)
    elif a == "Flee":
        NHP=HP-MATK
        HP=NHP
        print(" ")
        print("You tried to flee... But the overworld is missing.")
        print("You lost ", MATK, "HP. HP remaining: ", HP)
    elif a == "Heal":
        NHP=HP+3
        HP=NHP
        print(" ")
        print("You healed 3 HP.")
        print("HP:", HP)
    else:
        print(" ")
        print("That's not an option.")
0 голосов
/ 02 августа 2020

Вам лучше использовать некоторые функции, например:

def battle(ATK=5, DEF=2, MHP=40, MATK=5, HP=20):
    print("A Monster approaches you!")
    print("Fight, Mercy, Flee")

    action = input("Act: ")
    if action == 'leave':
        # leave the dungeon
        return False

    if action == "Fight":
        MHP -= ATK
        print("You hit the enemy for ", ATK, " damage!")
        print("Enemy HP remaining: ", MHP)
    elif action == "Mercy":
        print("You tried to spare the enemy...")
        if MHP < 15:
            print("You won!")
            print("You gained 0 EXP and 5 G")
        else:
            HP -= MATK
            print("But the Monster wasn't weakened enough.")
            print("You lost ", MATK, "HP. HP remaining: ", HP)
    elif action == "Flee":
        print("You tried to flee... But the overworld is missing.")
    else:
        print("That's not an option.")
    # return True to keep fighting
    return True
if __name__ == '__main__':
    fight = True
    while fight:
        fight = battle()
...