简体   繁体   English

简单的游戏清单

[英]Simple Game Inventory

so I am trying again to post this in a correct manner, but I am struggling with adding items to an inventory for a very simple text based game for a class project.所以我再次尝试以正确的方式发布此内容,但我正在努力为 class 项目的非常简单的基于文本的游戏添加项目到库存中。 The output should be as folllows: output 应如下所示:

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

In my game, the player will type a command like get Sword to pick up an item.在我的游戏中,玩家会输入一个命令,比如get Sword来捡起一个物品。 If that item isnt in the room they are in it should output You cant get that item here .如果那个项目不在房间里,他们应该在里面 output You cant get that item here Once the player gets the item in the room, it should be added into the inventory and removed from the room so that the input reads:一旦玩家在房间里拿到物品,它应该被添加到库存中并从房间中移除,以便输入显示:

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

I am having trouble getting the inventory to update and then the item no longer being in the room.我无法更新库存,然后该物品不再在房间里。 When I am in the room I try to get the item and it says You cant get that item here even if the item is in the room.当我在房间里时,我试图拿到该物品,它说即使该物品在房间里You cant get that item here Below is a simplified version of my code, any help is appreciated greatly.以下是我的代码的简化版本,非常感谢任何帮助。

# 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!')

From what I can see, your check for items is wrong.据我所知,您对物品的检查是错误的。 Your item is in the rooms[current_room]['item'] not rooms[current_room].keys()您的项目在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

If you are planning on placing multiple items in a room, I suggest that you convert the item key in all dictionaries to a list to make the checking easier.如果您打算在一个房间中放置多个项目,我建议您将所有字典中的item键转换为列表,以便于检查。 Also, go item will also pass your direction check and raise an error.此外, go item也将通过您的方向检查并引发错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM