如何让怪物在def main()战斗中生存(怪物)

2024-06-26 14:35:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个怪物列表,它可以从中选择

    def monsters():
    whatMonster = random.randint(0, 25)
    monster = pickMonster[whatMonster]
    print(monster.Name)
    print("life =", monster.life)
    print("EXP =", monster.exp)
    return monster

def Battle(monster):

    def attack(monster):
        print(monster.Name)
        print("life =", monster.life)
        print("EXP =", monster.exp)
        print()
        print("level", player.lvl)
        print("HP =", player.life)
        print("Ammor =", player.Def)
        pExp = 0
        pExp = monster.exp + pExp

    action = input(" will you [A]ttack or [R]un   ")
    if action == "A":
        print("you attack")
        attack(monster)
    if action == "R":
        print("You runaway")
    return attack
    return monster

def main():
        loop = True
        header()
        print()
        while loop == True:
            game_loop()
            print()
            monsters()
            print()
            player()
            Battle(monster)
            print()

它向我发送了以下类型错误:attack()缺少1个必需的位置参数:“monster”指向我,我无法理解这意味着什么


Tags: nameloopreturndefactionplayerprintattack
1条回答
网友
1楼 · 发布于 2024-06-26 14:35:45

您的attack()函数采用单个位置参数monster(您在定义函数时规定了此要求):

def attack(monster):
    ...

当你这样称呼它时:

if action == "A":
    print("you attack")
    attack()

您未能通过该参数,导致错误。相反,在调用函数时,需要将monster对象传递给该函数:

attack(monster)

从代码的其余部分来看,您似乎可以这样做:

random_monster = monsters()
...
attack(random_monster)

相关问题 更多 >