制作一个小程序,在文字游戏中从一个房间移动到另一个房间。无法更新房间或删除方向上的括号

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

这是我为学校项目编写的代码。我只需要能够获取用户输入并让他们从一个房间移动到另一个房间。

rooms = {
    'Great Hall': {'South': 'Bedroom'},
    'Bedroom': {'North': 'Great Hall', 'East': 'Cellar'},
    'Cellar': {'West': 'Bedroom'}
}


def move_room(user_input, current_room):

    valid_directions = rooms[current_room].keys()
    if user_input in valid_directions:
        next_room = rooms[current_room][user_input]
        print("You have moved to", next_room)
        return next_room
    else:
        print("There is no exit that way.")
        return current_room

def main():
    while True:
        current_room = 'Great Hall'
        print('You are in the', current_room)
        print('You can move', rooms[current_room].keys())
        user_input = input("Enter a direction:")
        if user_input != 'exit':
            next_room = move_room(user_input, current_room)
            current_room = next_room

        else:
            print("Goodbye")
            break



if __name__ == '__main__':
    main()

这是我运行代码时得到的结果。

你在人民大会堂 您可以移动 dict_keys(['South']) 输入方向:

您已搬到卧室 你在人民大会堂 您可以移动 dict_keys(['South']) 输入方向:

我不记得我所有的具体步骤。由于压力太大,我不得不离开几天。我尝试了几种不同的方法来让南边的 dict_keys 和括号消失,但不知道如何实现。

我也不知道如何让它更新新房间而不是默认到大厅。我尝试将其移至主函数上方并将其作为全局 current_room 访问。

如有任何帮助,我们将不胜感激。

如果有人需要知道我需要使用该项目的主要功能。

python scripting
1个回答
0
投票

您的代码在每个循环开始时将玩家移回大厅。

while True:
    current_room = 'Great Hall'
    print('You are in the', current_room)
    # etc.

不要这样做。初始化当前房间一次,然后进入循环。

current_room = 'Great Hall'
while True:
    print('You are in the', current_room)
    # etc.
© www.soinside.com 2019 - 2024. All rights reserved.