【问题标题】:Dynamically Creating MVC Objects动态创建 MVC 对象
【发布时间】:2015-08-09 08:13:23
【问题描述】:

我正在阅读 this 关于在游戏开发中使用 MVC 设计模式的文章,我很想尝试一下,但我对如何动态创建 MVC 对象有点困惑。在文章中,他们谈论的是射击游戏的创建,但我不明白士兵如何投掷手榴弹。士兵模型创建手榴弹模型很容易,但是如何在士兵模型不知道手榴弹 mvc 的视图和控制器的情况下设置视图和控制器呢?

【问题讨论】:

    标签: model-view-controller


    【解决方案1】:

    恕我直言,我认为你采取了错误的方式..

    每个游戏都有棋盘或地图。
    您的地图“模型”应该是创作的管弦乐队。

    因此,如果一名士兵正在投掷手榴弹:
    1. 你的 ui 控制器(或士兵控制器)会触发一个投掷手榴弹的事件。
    2. 您的地图模型获取该事件并为被投掷的手榴弹创建模型。
    3.当手榴弹飞行时,它应该从地图上接收有关经过的障碍物等信息。
    简而言之 - 地图是地图上所有可见对象的管弦乐队。
    关于文章注意,视图被描述为“EntityRepresentation”或我的话中的地图。
    它不是您期望在富客户端应用程序中找到的嵌套 MVC 模式。 祝你好运! :)

    【讨论】:

    • 文章的作者很友好地在几封电子邮件中解释了这是如何工作的,而且您所说的绝对正确。 'In our code, the RepresentationManager gets notified when an entity is added to the EntityManager (it could be a generic listener on the EntityManager). It then creates the EntityRepresentation. For that you'd use a factory pattern. Something like: map = { { "Entity", "EntityRep" }, { "EntityA", "EntityARep" }, ... } RepresentationManager::OnEntityAdded(Entity *e) { string rep_type = map[e->GetType()]; EntityRep *rep = factory->Create(rep_type) ... }'
    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多