分离的GUI和游戏逻辑类层次结构?

时间:2010-09-21 08:19:43

标签: user-interface hierarchy

我在Java上开发游戏,并希望将我的代码保存在hud / gui和游戏逻辑的包中,以便代码可以在其他项目中重用,并且要绘制的对象从另一个类调用方法或类(可能是一个“渲染上下文”,就像一组刚为绘图或类似的东西制作的类),问题是我无法找到实现这一目标的最佳方法,因为我研究过网络(也是这个论坛)和设计模式,但尽管有些看起来很有趣(如模型 - 视图 - 控制器),我找不到适合我的东西,也没有找到解决这个问题的常用方法。

我被告知要使对象实现一些可绘制的类接口,并且在这个对象调用的另一个类中,一些实现drawable并从canvas继承的对象,例如,如果我希望以后更改对象绘制或显示另一个更好的方法,例如从awt到swing,只能重写那些类,不需要担心我的对象代码, 任何帮助将不胜感激,提前谢谢!

1 个答案:

答案 0 :(得分:1)

我所做的通常是:

完全独立于所有视觉效果创建游戏对象。我将以国际象棋为例。每个棋子都继承了一个“GamePiece”界面并知道它的有效动作,它是什么“颜色”(不是视觉颜色,而是它的“侧面”)等等。但是这些棋子没有任何与绘制自己相关的代码。没有。基本上假装你在电脑里玩游戏而不需要画它。以这种方式设计你的整个游戏。你需要一个GameDirector来管理各个部分,GameBoard和抽象玩家。但仍然没有视觉表现。在如何设计类层次结构但将视觉效果排除在外的方面有很多余地。

您通过举办活动来传达州的变化,这是关键。因此,当玩家移动时,会引发一个事件。当GameDirector检测到将死时,会引发事件等等。

然后你有一个包含GameDirector的GameRender类。它会监听这些事件并相应地更新视觉场景(无论是简单的2D事物还是复杂的3D动画)。该类可以选择具有负责渲染游戏子组件但不是绝对必要的子组件。