我的文字游戏还有另外一个问题。我写了一个函数,根据滚动生成一个随机的暴徒。
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会从普遍的战斗中获得,并且该功能会在一次滚动后结束。
如何处理?
答案 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
我希望它会对你有所帮助。