我正在制作类似流氓的游戏,并且想知道是否有办法允许玩家通过输入来删除项目: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"
答案 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
快捷键。如果i
为True
,则会显示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