文字冒险 - 库存下降

时间:2016-06-14 21:00:08

标签: python python-3.x

我正在制作类似流氓的游戏,并且想知道是否有办法允许玩家通过输入来删除项目:Drop [Item Name]

Drop作为命令,项目名称是您的广告资源中的一个,例如如果我有一块我想摆脱的摇滚乐,我会输入:Drop Rock

CO = "Rock"

Inventory = {"Slot 1" : "Empty","Slot 2" : "Empty","Slot 3" : "Empty","Slot 4" : "Empty","Slot 5" : "Empty"}

def DROP():

    Slot_Number = int(input("\nInventory Slot to drop: "))
    Slot_Number = str(Slot_Number)
    Slot_Number = ("Slot " + Slot_Number)
    CO = Inventory[Slot_Number]
    Inventory[Slot_Number] = "Empty"

3 个答案:

答案 0 :(得分:1)

由于您使用了编号的广告位(而不是例如" bag"," pocket"),更简单的方法是使用列表作为广告资源。您可以索引到列表,并轻松地按值在列表中查找项目。

我还建议您使用None或至少一个空字符串""来表示空广告位(因为它们都等同于False

Inventory = ["","","","","","",""]

然后您可以按如下方式调整您的功能:

def DROP():
    Slot_Number = int(input("\nInventory Slot to drop: "))
    Inventory[Slot_Number] = ""

请注意,由于Python索引从零开始,如果您希望允许用户为第一个插槽而不是1输入0,则需要从提供的值中减去一个

def DROP():
    Slot_Number = int(input("\nInventory Slot to drop: "))
    Inventory[Slot_Number-1] = ""

要在清单中打印清单,您可以使用以下内容。 i or "Empty"建筑可能对你来说是新的:

for n, i in enumerate(Inventory):
    print("%d - %s" % (n+1, i or "Empty"))

i or "Empty"中,我们使用空字符串的 falsey 值以及or快捷键。如果iTrue,则会显示i中的值,如果为False(例如空字符串),则会打印or之后的值。没有这个的等价物是:

for n, i in enumerate(Inventory):
    if i:
        print("%d - %s" % (n+1, i))    
    else:
        print("%d - Empty" % (n+1))    

最后,drop_by_name函数的一个示例,您可以使用.index()查找列表Inventory中某些内容的位置并将其删除:

def drop_by_name():
    item_name = input('\nEnter the name of the item to drop: ')
    if item_name in Inventory:
        Slot_Number = Inventory.index(item_name)
        Inventory[Slot_Number] = ""

答案 1 :(得分:0)

您可能需要查看cmd,这样可以更轻松地处理命令

您可以为每个命令创建函数,然后调用

答案 2 :(得分:0)

我把它比@mfitzp更进了一步,并将它全部放到一行代码中,这样 Drop Stick 就会掉线。这是我使用的代码:

def DROP(CHOICE):

    global NV

    NV = CHOICE[5:]
    str(NV)

CHOICE = input("\nWhat do you want to do (type Help for list of commands): ")

if CHOICE.startswith("Drop ") or CHOICE.startswith("drop ") or CHOICE.startswith("DROP "):
    DROP(CHOICE)
    if NV in I:
            SN = I.index(NV)
            I[SN] = ""
    CO = NV