如何使raw_input调用一个函数

时间:2016-05-29 05:21:43

标签: python list function raw-input

我正在通过自己的创作修补游戏,我遇到了这个问题。我正在以非常互动的小说风格制作游戏,但我无法将raw_input调用为take swordtake(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可以显示游戏中的内容并且可以拍摄。 areasnoun在列表中有多个项目,因为包含一个房间和一个项目的游戏很无聊,因此忽略nounareas中不是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}}工作?

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)