我正在做一个小游戏。 现在,我需要弄清楚如何处理用户输入。
用户必须能够拿起或放下物品。 说明:“取货”。
'item'在列表中,因此可以是任何东西。
command = input("> ")
command = command.upper()
if self.current_room.is_connected(command):
self.move(command)
elif command in ['HELP', 'LOOK', 'QUIT', 'INVENTORY']:
self.commands(command)
elif ??? TAKE 'item'
self.take(command)
else:
print("Invalid move!")
我如何将此代码转移到take方法。 而我该如何拆分这两个单词的输入呢?
def take(self, command):
if command == 'TAKE':
if 'item' not in self.current_room.inventory:
print('No such item.')
else:
self.current_room.inventory.remove_item('item')
self.player_inventory.add_item('item')
print('item', 'taken.')
答案 0 :(得分:1)
当前,您的命令不会将命令参数拆分到arg列表中。这是一种相当简单的方法,可以通过在开始解析之前分解为参数来实现所需的内容。这是在编译器领域称为 tokenizing 的过程的一部分。
command = input("> ")
command = command.upper().split()
if self.current_room.is_connected(command[0]):
self.move(command[0])
elif command[0] in ['HELP', 'LOOK', 'QUIT', 'INVENTORY']:
self.commands(command)
elif command[0] in ['TAKE', 'DROP']:
item = command[1]
if command[0] == 'TAKE':
self.take(command[1])
else:
self.drop(command[1])
else:
print("Invalid move!")
您应该能够相当容易地处理take
和drop
方法中的错误。您可能需要检查以下几种情况:
drop
时)显示一条消息take
时)take
时)