当前位置: 首页 > 知识库问答 >
问题:

无效移动条件,基于Python文本的游戏

祁聪
2023-03-14

我需要一个基于文本的python游戏的帮助,我已经完成了大部分工作,我可以在所有3个房间之间移动,顶部有“大厅”,然后往南走“卧室”往东走“地窖”我可以往回走,所以往西走“卧室”向北走,最后回到大厅。

问题是,如果我在大厅里输入东,它会跳到地窖,而不是说无效移动,那里有一面墙。我想做的是

显示玩家当前所在房间的输出。决策分支告诉游戏如何处理不同的命令。命令可以是在房间之间移动(如向北、向南、向东或向西)或退出。如果玩家输入了有效的“移动”命令,游戏应该使用字典将他们移动到新的房间。如果玩家进入“出口”,游戏应该将他们的房间设置为一个叫做“出口”的房间。如果玩家输入无效命令,游戏应该向玩家输出错误消息(输入验证)。一种在玩家进入“退出”房间后结束游戏循环的方法

这是目前为止我写的代码

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


def player_stat():
    print("-" * 20)
    print('You are in the {}'.format(currentRoom))
    print("-" * 20)


currentRoom = 'Great Hall'
player_move = ''

while currentRoom != 'Exit':
    player_stat()
    player_move = input('Enter your move:\n')
    if player_move in ['Exit', 'exit']:
        currentRoom = 'Exit'
        print('Play again soon')
    elif player_move in ['South', "south"]:
        currentRoom = 'Bedroom'
    elif player_move in ['North', "north"]:
        currentRoom = 'Great Hall'
        print("You made it back to the Great Hall")
    elif player_move in ['East', 'east']:
        currentRoom = 'Cellar'
        print('YOU MADE IT TO THE CELLAR, try to go back to the Great Hall')
    elif player_move in ['West', "west"]:
        currentRoom = 'Bedroom'
print("You made it back to the Bedroom")

请帮帮我

共有2个答案

颛孙铭
2023-03-14

我修改了你的代码来利用字典。它涉及嵌套的条件语句。

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


def player_stat():
    print("-" * 20)
    print('You are in the {}'.format(currentRoom))
    print("-" * 20)


currentRoom = 'Great Hall'
player_move = ''

while currentRoom != 'Exit':
    player_stat()
    player_move = input('Enter your move:\n').title()
    if player_move == 'Exit':
        currentRoom = 'Exit'
    else:
        if player_move in rooms[currentRoom]:
            currentRoom = rooms[currentRoom][player_move]
            if currentRoom == 'Great Hall':
                print("You made it back to the Great Hall")
            elif currentRoom == 'Cellar':
                print('YOU MADE IT TO THE CELLAR, try to go back to the Great Hall')
        else:
            print("That is not a valid move, try again.")

print('Play again soon')

夹谷茂
2023-03-14
rooms = {
    'Great Hall': {'south': 'Bedroom'},
    'Bedroom': {'north': 'Great Hall', 'east': 'Cellar'},
    'Cellar': {'west': 'Bedroom'}
}


def player_stat():
    print("-" * 20)
    print('You are in the {}'.format(currentRoom))
    print("-" * 20)


currentRoom = 'Great Hall'
player_move = ''

while currentRoom != 'Exit':
    player_stat()
    player_move = input('Enter your move:\n').lower()
    if player_move in ['Exit', 'exit']:
        currentRoom = 'Exit'
        print('Play again soon')
        continue

    try:
        currentRoom = rooms[currentRoom][player_move]
    except Exception:
        print("invalid move")
        continue


    if currentRoom == 'Great Hall':
        print("You made it back to the Great Hall")
    elif currentRoom == 'Cellar':
        print('YOU MADE IT TO THE CELLAR, try to go back to the Great Hall')

print("You made it back to the Bedroom")
 类似资料:
  • 您好,我是新来的编码和创建一个基于文本的游戏在python中。我正在写代码从一个房间搬到另一个房间。我需要一些人帮我清理目前为止所做的事情。我运行了一个即时反馈程序,得到了以下提示,但不确定如何纠正: 大厅字符串是主字典中的一个关键字。修改代码,使其不是主字典中的关键字。 它说它不能分类我的代码(不确定那是什么意思) 将多个打印命令合并到一个函数中 使用非复杂条件使条件更简单 更好地练习在True

  • 我对编程游戏相当陌生;我已经3/4完成了,我有一个关于我制作的一个基于文本的小游戏的问题。。。所以在这个游戏中,我的

  • 我有一个包含10个图像的文件夹,我希望根据其当前文件名将其移动到一个新文件夹中。我已经成功地将文件夹中的每个图像移动到了一个新文件夹中,到目前为止,我已经成功地将每个图像文件名移动到了它自己的文件夹中,但我还没有弄清楚如何将具有相同文件名的所有图像移动到一个文件夹中,然后将另一个移动到另一个文件夹中。例如,下面我想相应地移动图像。 1600_01.jpg--- 到目前为止,这是我的代码,通过根据图

  • 我试图制作一个简单的基于文本的游戏,在这个游戏中,你在一个由“#”组成的网格周围移动“@”,并试图找到出口。我已经改变了代码,使我更容易使网格更大或更小,而无需添加或删除大量代码,它一直给我这样的输出: 我不知道这是怎么回事!只有一个“@”应该出现:(我只是python的新手,所以如果您有任何改进的建议,请不要犹豫,然后发布它们!提前感谢,

  • 安装jieba分词工具 在https://pypi.python.org/pypi/jieba/下载jieba-0.38.zip 解压后执行: python setup.py install 试验切词效果 创建testjieba.py文件内容如下: # coding:utf-8 #!/usr/local/bin/python import jieba seg_list = jieba.cut(

  • 我正在写一个基于文本的游戏,我想把每个房间链接到另外四个房间——北、南、东、西。我现在从北边开始。用户应该能够键入“向北走”,并且应该调用北房间。 我使用了三个文件——一个是我写主要故事的地方,一个是调用故事中适当的房间,一个是导航以避免相互导入。 房间。py: actions.py: 航行py: 当我运行first_room.start()时,它应该打印第一个房间。然后我输入“向北走”,我希望它