在游戏开发中,MVC中的控制器纯粹是为了处理用户输入吗?

时间:2008-12-10 17:43:27

标签: model-view-controller controller

我在这方面看到了相互矛盾的事情。

来自维基百科:

  

控制器       处理和响应事件,通常是用户操作,并可以调用   模型的变化。

这是“典型”这个词令人困惑。如果不仅仅是用户输入,那么还有什么?

6 个答案:

答案 0 :(得分:3)

我将控制器视为协调器,我的大部分代码通常都在控制器中。这是大多数分支发生的地方。在视图或模型中,大多数代码都将处理自身(数据对象对视图对象一无所知)。但是,控制器将数据对象(模型)与视图对象匹配,因此我将其视为协调器

一般的'测试'可以应用于他们的应用程序,看他们是否足够关注MVC:是否很容易重新应用你的应用程序? (交换视图而不重写一大堆代码)。

不要陷入围绕MVC的所有宗教辩论和严格的“规则”中,仅仅遵循80%的MVC“规则”赚钱的产品要好于尚未完成的产品实际上运行得很复杂......

答案 1 :(得分:2)

没有。在经典模式中,控制器可以从任何源获取输入。对于基于Web的MVC框架(如Ruby / Rails或ASP.NET MVC),控制器从查询和表单参数中获取输入。

有关http://en.wikipedia.org/wiki/Model-view-controller

的MVC的更多信息

编辑:当我说来自任何来源的输入时,我正在考虑一个可能有GUI和其他接口来输入源的应用程序,例如一个与控制器交互以更新的传感器子系统模特。

编辑:根据您的更新,如果游戏是多人互联网游戏,控制器可以响应网络事件。用户输入设备的控制器不会处理这些内容。

答案 2 :(得分:2)

控制器的职责是管理应用程序流程。它处理请求,合成适当的模型/视图/帮助程序,并可选择发出响应。

请求可以来自许多不同的来源,例如网络和本地服务,定时事件等。

答案 3 :(得分:0)

我呼叫验证和清理视图的用户输入部分。

我将控制器称为后面的逻辑,即获取经过验证的已清理数据的部分,并且可以使用它。这样,您就可以编写一个充当视图的测试工具,为控制器提供数据并测试结果。

答案 4 :(得分:0)

不应该用于模型和视图之间的所有交互(UI屏幕)这包括从模型中检索到的UI屏幕上的数据显示(更新屏幕),以及响应用户输入/与UI屏幕的交互...

它还可能包括由于用户在OTHER屏幕上的操作导致模型(在数据中)发生更改而更新UI屏幕,或者(在多用户并发系统中),其他用户对其进行操作存储库(数据库)中的数据

答案 5 :(得分:0)

不一定。控制器可以处理用户输入,更新模型,并可能决定直接返回JSON结果甚至是动态生成的图像而不是视图页。

控制器还可以决定页面流量。用户单击您网站上的“我的帐户”链接但尚未登录,因此他们会被定向到登录页面。成功登录后,控制器可以决定是否通过ReturnUrl查询参数将它们重定向回“我的帐户”页面。

你也可以在你的控制器中放置验证逻辑,但我不建议对大型项目采用这种方法。该逻辑属于您的模型。