显示可能的移动并接收不需要的打印语句

问题描述 投票:0回答:0

我需要添加一个显示当前可能走法的函数。我不知道该怎么做。当我不希望打印语句出现时,我也遇到了问题。如果我输入“获取项目”输入,它会打印“你不能那样做”。陈述。该声明应该只适用于无效命令。我是 Python 的新手,并不太了解我在做什么。请帮助。

# Dictionary for rooms and directions
rooms = {
'Living Room': {'West': 'Garage', 'East': 'Kitchen', 'North': 'Bedroom', 'South': 'Den', 'item': 'None'},
'Garage': {'East': 'Living Room', 'item': 'Candle'},
'Bedroom': {'East': 'Bathroom', 'South': 'Living Room', 'item': 'Lighter'},
'Bathroom': {'West': 'Bedroom', 'item': 'Mirror'},
'Kitchen': {'North': 'Pantry', 'West': 'Living Room', 'item': 'Bowl of water'},
'Pantry': {'South': 'Kitchen', 'item': 'Salt'},
'Den': {'East': 'Basement', 'North': 'Living Room', 'item': 'Spellbook'},
'Basement': {'West': 'Den', 'item': 'None', 'villain': 'Ghost'}
}

current_room = 'Living Room'  # Starting room

# Game instructions
def instructions():
    print('Collect all 6 items and defeat the ghost!')
    print('To move rooms, type: "North, South, East, or West".')
    print('To collect items, type: "get _item_".')
    print('To exit game, type: "Exit".')

# Player status
def show_status(current_room, inventory):
    print('----------------------')
    print('Your are in the', current_room)
    print('Inventory: ', inventory)
    print('You found {}'.format(rooms[current_room]['item']))
    print('----------------------')


def move_rooms(current_room, direction):  # Loop for location
    current_room = rooms[current_room]
    new_room = current_room[direction]
    return new_room


instructions()
direction = ['North', 'South', 'East', 'West']
inventory = []

# Game loop
while True:
    show_status(current_room, inventory)
    direction = input('\nWhat do you want to do?: ')
    if current_room in ['Basement']: #Boss room loop
        if len(inventory) == 6:
            print('You cast a spell and freed the ghost! You win!')
        else:
            print('The ghost attacks you! You lose!')
        break
    
    item = rooms[current_room].get('item')  # get the current item, or None if there isn't one
    if item is not None and direction == 'get ' + item:
        if item in inventory:  
            print('You already have this item in your inventory!')
        else:
            inventory.append(item)

    if direction in rooms[current_room]: #valid move
        current_room = move_rooms(current_room, direction)
    
    if direction == 'Exit': # Exit game 
        print('Thanks for playing!')
        break
text move inventory
© www.soinside.com 2019 - 2024. All rights reserved.