0

我正在为 Java 编程类编写文本冒险游戏。我正在使用abstract每个房间将继承和配置的父房间类设置房间。

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

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

  1. 直接向出口构造函数传递对房间实例的引用。
  2. 有一个静态类来跟踪所有房间实例,并具有从字符串名称或类等返回实例的方法。
    然后将退出对象的构造函数传递给标识目标房间的方法,例如唯一的字符串名称,该对象然后构造函数用于调用返回房间实例的静态类方法之一。

我不确定哪个是最好的选择,如何实现任何一个选项,或者是否有更好的方法。

4

2 回答 2

3

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

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

答案取决于你想对这些Exits 做什么。例如,如果您想强制执行双向出口(也就是说,如果房间 A 到 B 有一个出口,那么从 B 到 A 应该有一个出口),一个单独的出口管理类可能是合适的。但是,如果您只需要能够列出一个房间中的所有出口,然后通过其中一个移动到另一个,它们可以是 的属性Room

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

于 2012-04-16T15:05:42.540 回答
1

你把这个复杂化了

这是一个如何执行此操作的示例


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

于 2012-04-16T15:04:26.857 回答