如何让 raw_input 调用一个函数
how to make a raw_input call a function
我正在修改我自己创作的游戏,我遇到了这个问题。我正在以非常互动的小说风格制作游戏,但我无法让 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
或 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
要上班吗?
看起来你做得很好。我不确定我是否完全理解,但我认为您想跟踪用户所在的当前房间(我不确定您是否已经这样做,尚未指定).完成后,您已经将用户的输入存储在 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)
我正在修改我自己创作的游戏,我遇到了这个问题。我正在以非常互动的小说风格制作游戏,但我无法让 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
或 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
要上班吗?
看起来你做得很好。我不确定我是否完全理解,但我认为您想跟踪用户所在的当前房间(我不确定您是否已经这样做,尚未指定).完成后,您已经将用户的输入存储在 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)