《设计模式08》.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
综合举例 大富翁游戏:有一个人类玩家和多个电脑玩家在地图上移动,移动后根据所在地的不同,可以买地、盖房、交费等操纵。玩家的钱为0,则出局,剩余的玩家继续玩,直至某个人类玩家成为最终玩家,或者剩余玩家全部为电脑玩家。移动的步数通过掷骰子决定;地图中的道路有多种块组成;房子有多种; 游戏的变化 模型部分 地图的改变 地块种类的增加 房子种类的增加 骰子个数的动态改变 玩家种类的细分 … 视图部分 显示风格和素材的变化 UI交互的变化 引擎的变化 … 平台间的移植 Model与View Game包括Model和View Model中有多个类,View中只有一个屏幕界面 Model和View的交互 应用中介者和MVC模式 Game可与Control合并; Game可使用单件模式,View也可以; Game public class Game { private static Game instance = new Game(); private List<ModelElement> model; private View view; private Game() { } public static Game GetInstance() { return instance; } public bool Init() { } public bool Run() { } public bool Term() { } //其它操作 } View部分 负责界面显示 负责与玩家的交互 主要循环结构: Process与UpdateView的原始编码 public void ProcessInput() { if (scene == 1) { int key = GetKeyBoard(); if (key == 'A' ) { //do .... } else if (key == MOUSE_CLICK ) { //do .... } else { //do .... } }else if (scene == 2) { int key = GetKeyBoard(); if (key == 'D' ) { //do .... } else if (key == MOUSE_CLICK ) { //do .... } else { //do .... } } else { } } 用模式改进View 模版方法模式 使用策略模式 使用状态模式 使用模版方法模式 场景数量有限,可以; 易增加新的场景; 场景的切换,不易实现 使用策略模式 基本上与应用模版方法模式,有类似的效果 不足:场景切换 应用状态模式 续 使用状态模式可以达到类似的效果 场景的切换 对应于 状态的转换 本游戏中状态的转换,需要有三个因素: 前一个状态,当前状态,当前的操作。 可见:一个场景不可能进行自动的切换 选择:外部控制状态转换方法实现,如使用有限状态机 View与DX的交互 DirectX的多个版本支持 OpenGL的支持 第三方引擎的支持 简化维护的考虑 View修改Model的请求 public void ProcessInput() { if (scene == 1) { DoChange1(ModelElement2 ele); DoChange2(ModelElement1 ele);

文档评论(0)

精品文库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档