我正在通过自己的创作修补游戏,我遇到了这个问题。我正在以非常互动的小说风格制作游戏,但我无法将raw_input调用为take sword
到take(sword, room)
这样的函数,将其从room
移到inventory
。
首先,我正在使用该游戏来呼叫持续呼叫raw_input
:
GameOn=True
while GameOn==True:
a=raw_input("C:\>")
a=a.lower()
if a=="look":
look()
接下来是功能:
def take(item,room):
if item in tools:
if item[0] in room:
room.remove(item[0])
inventory.append(item[1])
print "taken"
else:
print item, "doesn't exist in this game"
def look(room):
place=areas[room]
for i in place:
print i
现在列表:
sword=["There is a sword here", "sword"]
room=["There is a table in the corner", sword[0]]
inventory=[]
areas=[room,bedroom,living_room]
tools=[sword, shield, axe]
tools
可以显示游戏中的内容并且可以拍摄。 areas
和noun
在列表中有多个项目,因为包含一个房间和一个项目的游戏很无聊,因此忽略noun
和areas
中不是sword
的所有内容1}}或room
。剑有两个列表的原因是sword[0]
room
显示sword[1]
inventory
print inventory
"sword"
look(room)
"There is a table in the corner"
"There is a sword here"
。实施例
C:\>look
"There is a table in the corner"
"There is a sword here"
它在游戏中的表现如何:
take(sword, room)
我可以让>>>room=["There is a table in the corner, sword[0]]
>>>inventory=[]
>>>look(room)
>"There is a table in the corner"
>"There is a sword here"
>>>print inventory
>
>>>take(sword, room)
>>>look(room)
>"There is a table in the corner"
>>>print inventory
>"sword"
工作(如下所示)所以我知道这不是代码:
raw_input
我添加'>>>'显示函数的变量或调用是什么,'>'显示回应。
现在已经涵盖了,我是否会重写我的一些代码,我在raw_input
做错了什么,我是否误解了take sword
的功能,或者如果不是我如何获得{{} 1}}工作?
答案 0 :(得分:1)
看起来你做得很好。我不确定我是否完全理解,但我认为你想跟踪用户所在的当前房间(我不确定你是否已经这样做了,它还没有被指定)。完成后,您已将用户的输入存储在a
。
然后你想要用空格分割输入(假设用户键入正确的响应“take sword”)并检查第一个单词是否为“take”。然后在那一点,如果第一个单词是“take”,那么你可以调用你的方法。
a = raw_input("C:\>")
a = a.lower()
if a.split(' ')[0] == 'take': # split the array by spaces
# (if the input is 'take sword', then [0] will be 'take' and [1] will be 'sword'
take(a.split(' ')[1], current_room)