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

Python-基于文本的游戏没有调用正确的房间

昌招
2023-03-14

我正在写一个基于文本的游戏,我想把每个房间链接到另外四个房间——北、南、东、西。我现在从北边开始。用户应该能够键入“向北走”,并且应该调用北房间。

我使用了三个文件——一个是我写主要故事的地方,一个是调用故事中适当的房间,一个是导航以避免相互导入。

房间。py:

import actions

class FirstRoom(object):

    room_name = 'FIRST ROOM'
    north = 'north_room'

    def __init__(self):
        pass

    def start(self):
        print self.room_name
        while True:
            next = raw_input('> ')
            actions.walk(next, self.north)
            actions.command(next)


class North(object):

    room_name = "NORTH ROOM"

    def __init__(self):
        pass

    def start(self):
        print self.room_name

actions.py:

import navigation

def walk(next, go_north):
    """Tests for 'walk' command and calls the appropriate room"""
    if next == 'walk north':
        navigation.rooms(go_north)
    else:
        pass

航行py:

import rooms
first_room = rooms.FirstRoom()
north_room = rooms.North()

def rooms(room):
    rooms = {
        'first_room': first_room.start(),
        'north_room': north_room.start(),
        }
    rooms[room]

当我运行first_room.start()时,它应该打印第一个房间。然后我输入“向北走”,我希望它打印“北房间”,但它再次打印“第一房间”。

我一辈子都搞不明白为什么它不能按我期望的方式工作,就好像它又在呼叫第一个房间而不是北房间。有人知道我做错了什么吗?

共有1个答案

汪高岑
2023-03-14

我的猜测是,问题的发生是因为如何定义字典房间。当你这么做的时候-

rooms = {
    'first_room': first_room.start(),
    'north_room': north_room.start(),
    }
rooms[room]

在定义字典本身时调用函数,而不是在访问字典中的值时调用函数(因此两个函数都被调用),您希望将函数对象(不调用它们)存储为值,然后将它们称为-rooms[room]()。范例-

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

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

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

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

  • 所以我是Java编码的新手,我对C#有很好的经验,我知道它们非常相似。我目前正在通过创建一个文本冒险游戏来处理Java,游戏使用案例(案例1、案例2、默认等),目前我正在开发一个保存和加载功能,但我不知道如何保存一个使用案例来进一步编码的分支游戏,有人有什么想法吗?

  • 在我的游戏中有几个类我写过,包括房间,灯,胸,爪哇,玩家,钥匙和地图。这些都经过了测试,并且是正确的,所以现在我正在编写我的adventure类,它是程序的驱动程序。我需要设置球员的房间位置[0][0],但我不知道怎么做。这是我到目前为止在我的房间和冒险课。