我正在为Java编程类编写Text Adventure游戏。我正在为房间设置一个父abstract
房间类,每个房间都会继承和配置。
对于退出,房间将调用.addExit()
方法并将其传递给退出对象。游戏应该只有每个房间的一个实例。退出对象应该有一个目标字段,指向在构造函数中初始化的游戏房间之一。
我的问题是我不知道如何将退出构造函数传递给预先存在的房间引用而不是新的房间对象。我看待它的方式有两种可能的方式:
我不确定哪个是最佳选择,如何实施任一选项,或者是否有更好的方法。
答案 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);
}
}