python - 简单的游戏库存

标签 python inventory

所以我再次尝试以正确的方式发布此内容,但我正在努力将项目添加到库存中,以用于类(class)项目的一个非常简单的基于文本的游戏。输出应如下所示:

You are in (room)
Inventory: []
You see a (item)
What do you wish to do?

在我的游戏中,玩家将输入诸如get Sword之类的命令来拾取元素。如果该元素不在他们所在的房间中,则应输出 You can't get that item here。一旦玩家在房间中获得该元素,就应该将其添加到库存中并从房间中删除,以便输入显示:

You are in (room)
Inventory: [Sword]
You dont see anything useful
What do you wish to do?

我在更新库存时遇到问题,然后该元素就不再在房间里了。当我在房间里时,我尝试获取该元素,但它显示您无法在此处获取该元素,即使该元素在房间内。 下面是我的代码的简化版本,非常感谢任何帮助。

# 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 也会通过您的方向检查并引发错误。

关于python - 简单的游戏库存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67182645/

相关文章:

mysql - MySQL 数据库中的 FIFO

python - SCRAPY:如何将数据存入Mysql数据库

python - Django 休息框架 : Get detail view using a field other than primary key integer id

python - 该算法是否在单位圆盘上生成均匀分布(确定性 RNG)?

python - Tensorflow:feed_dict 占位符是 Operation 而不是 Tensor

magento - 如何将外部库存管理程序与 magento 连接

r - R 中的排队和库存模型

python - 使用py2xe在windows中出现pyttsx编译错误

encoding - 上传亚马逊库存 UTF 8 编码

powerbi - 如何使用 Power BI DAX 从移动表计算每天的库存?