java – 如何在MVC 2D游戏中处理对象的图形表示?

前端之家收集整理的这篇文章主要介绍了java – 如何在MVC 2D游戏中处理对象的图形表示?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用MVC模式在 java中制作2D游戏,在阅读和搜索我的屁股之后,我仍然没有找到令人满意的安装,我应该如何处理对象的图形表示.

我应该将每个对象,例如Player分为PlayerModel(存储在Model中)和PlayerView(存储在View中)吗?

这似乎有点混乱,因为我必须跟踪哪个grapical-representation-object,即“ScaryMonsterEnemyView”连接到哪个逻辑表示对象,“ScaryMonsterEnemyModel”.根据MVC,这真的是我应该怎么做的吗?如果是,那么这个连接应该存储在哪里?在视图中?

我知道这可能是一个愚蠢的问题,但我想从一开始就尽可能多地获得.谢谢你帮忙:)

解决方法

如果我没有弄错的话,你基本上都在问如何将游戏分解为模型 – 视图 – 控制器范例.

简而言之,模型就是游戏的状态.在O-O术语中,您可以将模型视为游戏中的所有对象.

Controller是一组规则,适用于每个更新周期中游戏的状态(在本例中为所有游戏对象).这可以在所有对象中实现为一个名为update()的方法,或者它可以是一个在游戏循环中调用函数,它系统地遍历所有需要更新的对象,并且更新它们.您还可以将Controller视为游戏循环本身.它会调用所有内容进行更新,然后在屏幕上绘制并重复,除非满足某些条件,然后它会告诉程序执行其他操作.通过这种方式,您几乎拥有两个嵌套的MVC结构.一个通过菜单等控制程序流程,一个专用于游戏本身.

视图只是游戏的图形表示.这可以像屏幕上的文字一样简单,但在您的情况下,它是2D图形.要实现这一点,您可以让每个对象也直接或通过封装包含其图形状态. View只会查询所有对象的图形状态,然后将其分流到屏幕上.同样,这可以基于每个对象实现,例如称为draw()的方法,或者直接从游戏循环调用的另一个系统函数.通常的做法是创建一个名为“Sptite”的对象或类似的东西来保存图形信息,并且绘制的每个游戏对象都有一个个人实例.另请注意,View不必是自身的对象.仅仅在游戏循环中调用函数就足够了,尽管有时需要存储直接影响View操作的信息(如窗口大小),在这种情况下,View可以是一个对象.控制器也是如此.

还要记住,这些划分可以进一步划分,以使生活更简单.例如:控制器可以分为AI处理,移动更新和碰撞检查.视图可以分为游戏对象显示和HUD,而模型可以是所有状态的所有对象,独立于游戏对象(如分辨率的游戏设置,窗口大小,键配置等).

我知道这可能有点矫枉过正,它可能有额外的信息,但希望它能回答你的问题,并为你提供从哪里开始的想法.

猜你在找的Java相关文章