检查药水使用的更好方法是什么?

时间:2016-03-08 21:06:07

标签: python loops potion

在我的游戏中,我遇到了魔药的问题。如果在某个房间里有药水,我会像这样创建一个我的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."

这对我来说似乎是一个相当漫长的方法,但它确实有效。我只是想知道我是否忽略了另一种更简单的方法来做到这一点。如果没有,我可以使用这种格式,但如果我可以清理我的代码,我宁愿这样做。 谢谢!

1 个答案:

答案 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