对于我的游戏,我使用状态模式来处理我的屏幕。屏幕需要更新和渲染每一帧。游戏循环在Game类中。游戏开发 - 更新方法和状态模式
但我也需要在实体类中的更新和渲染方法。我应该在屏幕和实体类(例如FrameProcess)中使用接口吗?或者我可以像这样离开它(见图)?
面向对象的最佳实践是什么?这有什么模式吗?
这个问题的基本UML:
对于我的游戏,我使用状态模式来处理我的屏幕。屏幕需要更新和渲染每一帧。游戏循环在Game类中。游戏开发 - 更新方法和状态模式
但我也需要在实体类中的更新和渲染方法。我应该在屏幕和实体类(例如FrameProcess)中使用接口吗?或者我可以像这样离开它(见图)?
面向对象的最佳实践是什么?这有什么模式吗?
这个问题的基本UML:
我会为Entity
类中的update()
和render()
方法创建纯虚函数,并让从它继承的类定义它们自己的行为,这将允许系统以多态方式行为。然后在Game
类或一些其他类型的处理程序类调用update()
和draw()
方法基于系统的当前状态,使用状态模式决定它。
顺便说一句,它告诉更多的国家模式,在http://gameprogrammingpatterns.com/state.html
这取决于你所说的 “实体” 在这方面的意思。如果一个实体覆盖可呈现和可更新的所有内容,为两者创建一个虚拟函数都可以(如果您计划派生其他类型的实体,如车辆或武器)。如果你有除Entity以外的其他可渲染和可更新的类型,在我看来,一个界面会是更好的选择。
您可能还有更好的选择https://gamedev.stackexchange.com/以获取更多Q & A关于gamedev。
实体是抽象的,因此必须已经可以推导出来。 –
其用法示例(或多个)以非常明确的方式,如果得到的实体会发生什么,你从屏幕递给你的游戏对象,而不是GameScreen实体或MenuScreen? –
是的,有一种状态机的模式,我甚至为此提供了一个抽象[framework](http://makulik.github.io/sttcl/)。 –
@DanielT。我想在我的游戏中拥有不同的屏幕。标题屏幕,菜单屏幕和游戏屏幕。而在我的GameScreen中,我将拥有包含玩家,敌人等实体的关卡。 – Liddelfranks