如果我没记错的话,您基本上是在问如何将游戏拆分为模型-视图-控制器范式。
简单地说,模型就是你游戏的状态。在 OO 术语中,您可以将模型视为游戏中的所有对象。
控制器是在每个更新周期中应用于游戏状态(在本例中为所有游戏对象)的一组规则。这可以在您的所有对象中实现为一个名为 update() 的方法,或者它可以是在您的游戏循环中调用的一个函数,该函数系统地遍历所有需要更新的对象并更新它们。您也可以将控制器视为游戏循环本身。它调用所有内容进行更新,然后将其绘制在屏幕上并重复,除非满足某些条件,否则它会告诉程序执行其他操作。这样,您几乎拥有两个嵌套的 MVC 结构。一种通过菜单等控制程序的流程,另一种专用于游戏本身。
视图只是游戏的图形表示。这可以像屏幕上的文本一样简单,但在您的情况下,它是 2D 图形。为了实现这一点,您可以让每个对象也直接包含它们的图形状态,或者通过封装。视图只会查询所有对象的图形状态,然后将其分流到屏幕上。同样,这可以在每个对象的基础上实现,例如调用 draw() 的方法,或直接从游戏循环调用的另一个系统函数。一种常见的做法是创建一个名为“Sptite”的对象或类似的东西来保存图形信息,并让每个绘制的游戏对象都有一个个人实例。另请注意,视图不必是其自身的对象。在游戏循环中调用一个函数就足够了,尽管有时需要存储直接影响 View 操作的信息(如窗口大小),在这种情况下 View 可以是一个对象。控制器也是如此。
还要记住,这些部门可以进一步划分,以使生活更简单。例如:Controller 可以分为 AI 处理、动作更新和碰撞检查。View 可以分为游戏对象显示和 HUD,Model 可以是所有对象 + 所有独立于游戏对象的状态(如游戏的分辨率、窗口大小、键配置等设置)。
我知道这可能有点矫枉过正,它可能有额外的信息,但希望它回答你的问题,并给你从哪里开始的想法。