oop - 模型/ View 分离

标签 oop design-patterns language-agnostic game-engine

假设我正在制作视频游戏。玩家有一个 X 和一个 Y 坐标,这些值是 Player 对象的成员。我们还假设我正在使用假设的 GAME-X 游戏引擎,它使用 GX_xGX_y 值渲染每个对象。

如果我想将域(Player)与 View (GAME-X)分开,我的理解是播放器应该有自己的 XY 坐标是独立操作的,而 GX_xGX_y 只是“监听”玩家的当前坐标。例如,这样做可以让我选择一个新的游戏引擎,同时保持域层不变。这也意味着游戏基本上可以在严格的域级别上运行。

这是一个好的设计策略吗?如果不是,为什么?如果是这样,该策略的真实名称是什么?我如何在整个系统中改进它?

最佳答案

player should have its own X and Y coordinates which are manipulated independently, and the GX_x and GX_y simply "listen" to the player's current coordinates.

这是正确的策略。由于 GX_xGX_y 是表示级的并且可以是特定于设备/分辨率/引擎的。

考虑 2 部分辨率为 480*320960*640 的手机。 x,y 在你的模型中应该是相同的(在两部手机中运行相同的代码)而 GX_xGX_y 在两种设备上会有所不同。

Model View Controller你说的模式。

choose a new game engine while leaving the domain layer untouched. It also means that the game can essentially run on a strictly domain level.

这些是使用该模式的优点和原因。

关于oop - 模型/ View 分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18276025/

相关文章:

algorithm - "matrix"带有随机元素,如何对齐同一列中的相同元素?

algorithm - "Hasty Pudding"密码的示例源代码?

python - 什么时候(以及为什么)引入 Python `__new__()`?

java - 外观设计模式和抽象

php - 什么时候你才能称自己为 PHP 专业人士?

model-view-controller - 表数据网关和模型

design-patterns - 业务委托(delegate)和 View 助手之间的区别

multithreading - Lockfree 标准集合和教程或文章

design-patterns - 这是 IOC 的典型用例吗?

c++ - 为什么使用指针而不是直接实例化对象时不使用类成员的默认值?