我正在创建一个文本冒险游戏,如果用户输入“x
”或“examine
”,它就会这样做,它会打印一个房间的描述(存储在一个函数内的一个字符串)
这是代码:
def look(dsc):
print(dsc)
def usr_input(dsc):
a = input(">>> ")
if a == "examine" or a == "x":
look(dsc)
if a == "help":
print("north, n, east, e, south, s, west, w, up, u, down, d, inventory, i, examine, x")
if a == "north" or a == "n" or a == "forwards":
return "north"
if a == "east" or a == "e" or a == "right":
return "east"
if a == "south" or a == "s" or a == "backwards":
return "south"
if a == "west" or a == "w" or a == "left":
return "west"
if a == "up" or a == "u":
return "up"
if a == "down" or a == "d":
return "down"
else:
print("Sorry, I don't understand that. (Type 'help' for a list of commands")
usr_input()
return False
def room_00():
room_description = "Description goes here"
print(room_description)
usr_input(room_description)
room_00()
基本上,只要用户输入look
,我就需要函数“x
”来打印该房间的描述,但我无法获得要链接的功能。
答案 0 :(得分:0)
尝试a = raw_input('>>> ')
,然后a = a.strip()
也
def look(dsc):
print dsc
你需要一个标签而不需要()
答案 1 :(得分:0)
我认为正确的解决方案是创建课堂,其中的实例会存储房间描述,也许还有别的东西,也许是其他房间的门列表(你不会只有一个房间,是吗? )
这个类也应该有look
方法让你已经知道了什么。
我认为您应该将当前房间存储在某个全局变量中,当您需要当前房间的描述时,您只需访问该变量,获取Room对象并调用其look
方法。
据我所知,访问函数局部变量是不可能的。如果我错了,请纠正我。
答案 2 :(得分:0)
您的代码似乎运行没有任何问题,忽略上面的人,Python 3确实需要括号用于打印调用。
它返回了一个回溯,因为在第28行,你在没有提供参数的情况下调用usr_input()函数。
您可以通过定义如下函数来解决此问题:
def look(dsc=''):
print(dsc)
这会将空字符串传递给函数,除非你传递一个自己的字符串。
另一个问题是你使用的是raw if语句。所以最后的评估在这里:
if a == "down" or a == "d":
return "down"
else:
print("Sorry, I don't understand that. (Type 'help' for a list of commands")
usr_input()
return False
转到else分支,因为x既不是“down”也不是“a”,你应该用elif替换第一个下面的所有if语句,并保留最后的其他语句