在我的游戏中,我遇到了魔药的问题。如果在某个房间里有药水,我会像这样创建一个我的Potion()类的新实例:
potion = Potion()
问题在于,用户可以根据需要多次调用它并自我修复,直到他们的健康状况达到最大值,因为raw_input()处于无限循环中。我通过使用del
删除实例解决了这个问题。
我的下一个问题是房间含有多种药水。这是我的解决方案
potion = Potion()
potion_exist = True
potion2 = Potion()
potion2_exist = True
potion3 = Potion()
potion3_exist = True
在循环中:
if next == "potion":
if potion_exist:
print "Potion 1"
potion.heal(You)
del potion
potion_exist = False
elif potion2_exist:
print "Potion 2"
potion2.heal(You)
del potion2
potion2_exist = False
elif potion3_exist:
print "Potion 3"
potion3.heal(You)
del potion3
potion3_exist = False
else:
print "There is no potion to use."
这对我来说似乎是一个相当漫长的方法,但它确实有效。我只是想知道我是否忽略了另一种更简单的方法来做到这一点。如果没有,我可以使用这种格式,但如果我可以清理我的代码,我宁愿这样做。 谢谢!
答案 0 :(得分:1)
使用list来存储药水实例。在主函数中将其定义为这样。
potions = []
for i in range(3): # append 3 potions to the list
potions.append(Potion())
循环中的代码看起来像这样(它总是使用列表中的第0个部分):
if next == "potion":
if (len(potions) > 0): # if there are potions left
print "potion"
potions[0].heal(You) # heal using zeroth potion from the list
potions.pop(0) # remove zeroth item from the list