多次调用函数

时间:2018-05-02 10:17:35

标签: python python-3.x

我的文字游戏还有另外一个问题。我写了一个函数,根据滚动生成一个随机的暴徒。

 def random_mob():
        roll = twenty_sided_die.roll()
        if roll <= 5 :
            return Zombie()
        elif roll <= 10:
            return Ghul()
        elif roll <= 15:
            return Skeleton()
        elif roll <= 19:
            return Ghost()
        else:
            return Slime()
    mob = random_mob()

我有一个名为encounter的函数:

def encounter():
    for command, action in hero.COMMANDS.items():
        print("Press {} to {}".format(command, action[0]))
    while True:
        command = input("~~~~~~~Press key to continue~~~~~~~")
        if command not in hero.COMMANDS:
            print("Not a valid command")
            continue
        print("You are fighting " + mob.name)
        print("")
        time.sleep(1)
        break
    while True:
        if command:
            hero.COMMANDS[command][1]()
            PlayerAttack()
            time.sleep(1)
            if mob.hp > 0:
                MonsterAttack()
                time.sleep(1)
                if hero.hp <= 0:
                    print("++++++You were killed++++++")
                    break
                    time.sleep(1)
                else:
                    continue

当调用该函数时,正在生成随机怪物,战斗和滚动开始。每次成功翻滚后,怪物都会失去它的HP。

在功能结束后,我想打电话给下一次遭遇,再次产生一个随机的暴徒并开始战斗

我遇到的问题是,如果我再次调用遇见(),它会生成相同的怪物,而HP会从普遍的战斗中获得,并且该功能会在一次滚动后结束。

如何处理?

2 个答案:

答案 0 :(得分:0)

你没有初始化怪物的生命值。也许mob应该是一个数组,你可以通过encounter()方法/函数追加/推送新的怪物。然后,如果在战斗期间怪物被杀死你移除/弹出它。例如(在这个例子中,下一个战斗的怪物是在堆栈顶部,如果堆栈是空的战斗结束):

#begin game    
mob = []

...

# add monster object to the stack
mob.push(random_mob())

...

if mob.hp > 0:
   #do fighting
else:
   # remove monster object from the stack
   mob.pop()

答案 1 :(得分:0)

首先,我认为您要了解Python的工作原理以及变量如何在包,类和函数内部管理myscipt.sh variable1=value1 variable2=value2 .. variableN=valueN

您还应该了解有关使用对象的常规编程的更多信息,以便在良好的基础上开始。你可以在网上找到很多教程。

如评论中所述,您的主要问题是您的变量myvar=$(echo $@ | tr " " "\n") for x in $variable do echo $x done 永远不会被修改!

以下是调用函数scope时可以随机生成怪物的工厂示例:

mob

我希望它会对你有所帮助。