我想编写一个简单的命令,可以为文本冒险游戏带来3个参数。
基本上在提示符下,我会输入'使用钥匙解锁门',它会运行一个特定的块。
以下是我编码但不起作用的内容:
def do_use(self, tool, action, object):
if tool == 'key':
if action == 'unlock':
if object == 'door':
print("seems like it works!")
else:
print("nope 1")
else:
print("nope 2")
else:
print("nope 3")
注意:其余命令工作正常。我导入了cmd 以下是主要代码:
class Game(cmd.Cmd):
def __init__(self):
cmd.Cmd.__init__(self)
....
if __name__ == "__main__":
g = Game()
g.cmdloop()
在提示符处,当我输入:
>>> use key unlock door
我收到以下错误消息:
TypeError: do_use() takes exactly 4 arguments (2 given)
如果打印出代码,代码就会起作用:
seems like it works!
任何帮助将不胜感激。
答案 0 :(得分:1)
阅读该文档,看起来所有命令只需要一个字符串,你必须自己解析字符串。您的命令被定义为接受4个参数(包括self
),而cmd
使用self, input
调用它,即2.我认为可以通过以下方式获得您想要的结果:< / p>
def do_use(self, user_input):
args = user_input.split()
if len(args) != 3:
print "*** invalid number of arguments"
else:
tool, action, obj = args
# Do the rest of your code here