在文本冒险中实现退出

时间:2012-04-16 14:56:48

标签: java oop text adventure

我正在为Java编程类编写Text Adventure游戏。我正在为房间设置一个父abstract房间类,每个房间都会继承和配置。

对于退出,房间将调用.addExit()方法并将其传递给退出对象。游戏应该只有每个房间的一个实例。退出对象应该有一个目标字段,指向在构造函数中初始化的游戏房间之一。

我的问题是我不知道如何将退出构造函数传递给预先存在的房间引用而不是新的房间对象。我看待它的方式有两种可能的方式:

  1. 直接向出口构造函数传递对房间实例的引用。
  2. 拥有一个跟踪所有房间实例的静态类,并具有从字符串名称或类等返回实例的方法 然后传递出口对象的构造函数,以识别目标房间,比如一个唯一的字符串名称,然后对象构造函数将其用于调用返回房间实例的静态类方法之一。
  3. 我不确定哪个是最佳选择,如何实施任一选项,或者是否有更好的方法。

2 个答案:

答案 0 :(得分:3)

我不认为为每个房间单独上课是一个好主意。使用单个Room类可能会更好,其中每个实例代表一个单独的房间。 (我知道MUD是以这种方式编码的,但即使你有“虚拟”)

但除此之外,问题是:Exit是房间的属性还是可以并且应该单独管理的东西?

答案取决于您对这些Exit的确切要求。例如,如果您想强制执行双向退出(即,如果从A房间到B房间退出,则应该有一个从B到A的退出),则可能需要单独的退出管理类。但是,如果您只需要能够列出房间中的所有出口,然后通过其中一个出口移动到另一个出口,则它们可以是Room的属性。

如果您事先不知道,请从简单开始(每个房间分别添加退出),如果不起作用,您可以随时切换到更复杂的解决方案。

答案 1 :(得分:1)

你过度复杂了

以下是如何执行此操作的示例


    public abstract static class Room {
        List exits = new ArrayList();
        public void addExit(Room r) {
           exits.add(r);
        }
    }