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

基于Python文本的游戏房间到房间移动

壤驷志学
2023-03-14

您好,我是新来的编码和创建一个基于文本的游戏在python中。我正在写代码从一个房间搬到另一个房间。我需要一些人帮我清理目前为止所做的事情。我运行了一个即时反馈程序,得到了以下提示,但不确定如何纠正:

  • 大厅字符串是主字典中的一个关键字。修改代码,使其不是主字典中的关键字。
  • 它说它不能分类我的代码(不确定那是什么意思)
  • 将多个打印命令合并到一个函数中
  • 使用非复杂条件使条件更简单
  • 更好地练习在True时使用:当你需要循环停止时,中断保留字可以停止循环
rooms = {'Great Hall': {'name': 'Great Hall', 'South': 'Bedroom', 'North': 'Dungeon', 'West': 
'Library', 'East': 'Kitchen'},
     
'Bedroom': {'name': 'Bedroom', 'East': 'Cellar', 'North': 'Great Hall'},
      
'Cellar': {'name': 'Cellar', 'West': 'Bedroom'},
     
'Library': {'name': 'Library', 'East': 'Great Hall'},
    
'Kitchen': {'name': 'Kitchen', 'West': 'Great Hall', 'North': 'Dining Room'},
     
'Dining Room': {'name': 'Dining Room', 'South': 'Kitchen'},
     
'Dungeon': {'name': 'Dungeon', 'South': 'Great Hall', 'East': 'Gallery'},
    
'Gallery': {'name': 'Gallery', 'West': 'Dungeon'},
    
}

directions = ['North', 'South', 'East', 'West']

current_room = rooms['Great Hall']
while True:

# display current location

print()

print('You are in the {}.'.format(current_room['name']))

# get user input
command = input('\nWhat direction do you want to go? ').strip()
# movement
if command in directions:
    if command in current_room:
        current_room = rooms[current_room[command]]
    else:
        # bad movement
        print("You can't go that way.")
# Exit game
elif command.lower() in ('q', 'quit'):
    break
# bad command
else:
    print("I don't understand that command.")

共有1个答案

谢锦程
2023-03-14

顺便说一下,您将在代码审查堆栈交换上获得更多帮助。https://codereview.stackexchange.com/

首先,您的代码不起作用-While循环中的代码没有缩进。

这将抛出一个错误:

while True:
print("hi")

这不会:

while True:
    print("hi")
  • 更好地练习在True时使用:当你需要循环停止时,中断保留字可以停止循环

您似乎已经在使用它,但由于缩进错误,它没有注意到它。

  • 大厅字符串是主字典中的一个关键字。修改代码,使其不是主字典中的关键字。

这可能意味着制作多个词典,而不是把它们全部放在一个词典中,但这并不重要,所以我不知道为什么它会抱怨。

>

  • 它说它不能对我的代码进行分类(不确定这意味着什么)我也不知道;请提供一些上下文。

    将多个打印命令合并到一个函数中

    现在这已经失控了。我不知道为什么它会告诉你这么做,但你可以用一个元组:

    def printstuff(x):
        for i in x:
            print(i)
    
    printstuff((5,5,3,85,"hi"))
    # will print:
    # 5
    # 5
    # 3
    # 85
    # hi 
    
    • 通过使用非复杂条件简化条件

    不知道这意味着什么。同样,请提供上下文。

    另外,正如一条评论所说,使用f-strings(仅限python 3.6)将使您的生活更加轻松。这:

    hello = "hello world"
    print("\n{}".format(hello))
    

    可以缩短为:

    hello = "hello world"
    print(f"\n{hello}")
    

    \n将充当空白print()调用)

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

    • 我正在为一个C项目做一个冒险游戏。目标基本上是拥有一组由类定义的房间。然后使用地图将它们链接在一起。除了检查是否没有房间和确保没有为空房间接受输入之外,我的一切都正常工作。例如,它会说“那里什么都没有”,然后重新提示用户移动的方向。当前,如果某个方向上没有空间,并且选择了该方向,我的程序就会崩溃。我现在已经设置好了它,至少确保输入了一个有效的方向(北、南、东或西),但它没有检查这个方向是否可用。有

    • 在许多应用中,有必要将用户划分为可以一并处理的几个子集。最好的例子是,一个包含多个房间的聊天应用,当用户收到他所在的房间的消息,而不会收到其他人所在房间的消息。Flask-SocketIO支持通过join_room()和leave_room()函数来支持房间的概念: from flask_socketio import join_room, leave_room @socketio.on('j

    • 并且我发现了基于数据库版本4的可能场景的迁移varargs。 我的问题是,假设我使用的是db v1的Room,当我的应用程序到达db v10时,我将不得不编写多少迁移方法? 在sqlite中,我们在中获得已安装应用程序的当前db版本,我们只需通过开关大小写而不使用break语句,以便满足所有db升级。

    • 我需要一个基于文本的python游戏的帮助,我已经完成了大部分工作,我可以在所有3个房间之间移动,顶部有“大厅”,然后往南走“卧室”往东走“地窖”我可以往回走,所以往西走“卧室”向北走,最后回到大厅。 问题是,如果我在大厅里输入东,它会跳到地窖,而不是说无效移动,那里有一面墙。我想做的是 显示玩家当前所在房间的输出。决策分支告诉游戏如何处理不同的命令。命令可以是在房间之间移动(如向北、向南、向东或

    • 我目前正在创建一个冒险游戏,你通过输入命令(北,南)通过一个地牢的房间移动。所以我试图用字典把每个房间连接在一起,这样我就可以用“北”、“南”等键来移动这些房间。但我似乎不明白。有什么想法吗?