简单的游戏清单
Simple Game Inventory
所以我再次尝试以正确的方式post,但我正在努力为 class 项目的一个非常简单的基于文本的游戏添加项目。输出应如下所示:
You are in (room)
Inventory: []
You see a (item)
What do you wish to do?
在我的游戏中,玩家将键入 get Sword
之类的命令来拾取物品。如果那个物品不在房间里,他们在房间里,它应该输出 You cant get that item here
。一旦玩家在房间里拿到物品,就应该将其添加到物品栏中并从房间中移除,以便输入内容为:
You are in (room)
Inventory: [Sword]
You dont see anything useful
What do you wish to do?
我在更新库存时遇到问题,然后物品不再在房间里了。当我在房间里时,我试图拿到物品,它显示 You cant get that item here
,即使物品在房间里。
下面是我的代码的简化版本,非常感谢任何帮助。
# A dictionary for the simplified text game that links a room to other rooms.
rooms = {
'Entrance Hall': {'North': 'Great Hall', 'East': 'Gallery', 'West': 'Library', 'item': 'None'},
'Library': {'East': 'Entrance Hall', 'item': 'Book'},
'Gallery': {'West': 'Entrance Hall', 'item': 'Sword'}
}
instructions = 'To move type: go North, go East, go West, go South' \
'to get items type get Item, ex: get Sword\n '
directions = ['go North', 'go South', 'go East', 'go West']
pick_up_items = ['get Ale', 'get Book', 'get Armor', 'get Sword', 'Necromancer', 'get Knife', 'get Candle']
print(instructions)
current_room = 'Entrance Hall'
item_in_room = 'None'
inventory = []
while True:
print('You are in the {}.'.format(current_room))
print('Inventory:', inventory)
if item_in_room == 'None':
print("You don't see anything useful")
else:
print('You see a', item_in_room)
# gets the users input
command = input('\nWhat do you wish to do? ') # this controls the movement
if command in directions:
command = command.split()[1]
if command in rooms[current_room].keys():
current_room = rooms[current_room][command]
item_in_room = rooms[current_room]['item']
else:
# if the player inputs a bad movement
print('You cant go that way!')
# Checks to see if the player types a 'get' command and adds the item in the room to the players inventory.
if command in pick_up_items:
command = command.split()[1]
if command in rooms[current_room].keys():
inventory.append(current_room['item'])
else:
# if the player inputs a item not in the room
print('You cant get that item here!')
据我所知,您的物品检查有误。
您的商品在 rooms[current_room]['item']
而不是 rooms[current_room].keys()
if command == rooms[current_room]['item']:
inventory.append(rooms[current_room]['item']) #another error i found out
rooms[current_room]['item'] = 'None' #make sure that you check that command isn't None or it will be added as an Item
# other stuff
如果您打算在一个房间里放置多个物品,我建议您将所有词典中的item
键转换为一个列表,以便于检查。此外,go item
也会通过您的方向检查并引发错误。
所以我再次尝试以正确的方式post,但我正在努力为 class 项目的一个非常简单的基于文本的游戏添加项目。输出应如下所示:
You are in (room)
Inventory: []
You see a (item)
What do you wish to do?
在我的游戏中,玩家将键入 get Sword
之类的命令来拾取物品。如果那个物品不在房间里,他们在房间里,它应该输出 You cant get that item here
。一旦玩家在房间里拿到物品,就应该将其添加到物品栏中并从房间中移除,以便输入内容为:
You are in (room)
Inventory: [Sword]
You dont see anything useful
What do you wish to do?
我在更新库存时遇到问题,然后物品不再在房间里了。当我在房间里时,我试图拿到物品,它显示 You cant get that item here
,即使物品在房间里。
下面是我的代码的简化版本,非常感谢任何帮助。
# A dictionary for the simplified text game that links a room to other rooms.
rooms = {
'Entrance Hall': {'North': 'Great Hall', 'East': 'Gallery', 'West': 'Library', 'item': 'None'},
'Library': {'East': 'Entrance Hall', 'item': 'Book'},
'Gallery': {'West': 'Entrance Hall', 'item': 'Sword'}
}
instructions = 'To move type: go North, go East, go West, go South' \
'to get items type get Item, ex: get Sword\n '
directions = ['go North', 'go South', 'go East', 'go West']
pick_up_items = ['get Ale', 'get Book', 'get Armor', 'get Sword', 'Necromancer', 'get Knife', 'get Candle']
print(instructions)
current_room = 'Entrance Hall'
item_in_room = 'None'
inventory = []
while True:
print('You are in the {}.'.format(current_room))
print('Inventory:', inventory)
if item_in_room == 'None':
print("You don't see anything useful")
else:
print('You see a', item_in_room)
# gets the users input
command = input('\nWhat do you wish to do? ') # this controls the movement
if command in directions:
command = command.split()[1]
if command in rooms[current_room].keys():
current_room = rooms[current_room][command]
item_in_room = rooms[current_room]['item']
else:
# if the player inputs a bad movement
print('You cant go that way!')
# Checks to see if the player types a 'get' command and adds the item in the room to the players inventory.
if command in pick_up_items:
command = command.split()[1]
if command in rooms[current_room].keys():
inventory.append(current_room['item'])
else:
# if the player inputs a item not in the room
print('You cant get that item here!')
据我所知,您的物品检查有误。
您的商品在 rooms[current_room]['item']
而不是 rooms[current_room].keys()
if command == rooms[current_room]['item']:
inventory.append(rooms[current_room]['item']) #another error i found out
rooms[current_room]['item'] = 'None' #make sure that you check that command isn't None or it will be added as an Item
# other stuff
如果您打算在一个房间里放置多个物品,我建议您将所有词典中的item
键转换为一个列表,以便于检查。此外,go item
也会通过您的方向检查并引发错误。