游戏中设计模式演讲介绍.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 游戏总体设计 设计模式解析 游戏简介 游戏简介 ●简介 角色扮演类游戏(RPG),该游戏实现的具体功能是设计两种类型的人物,分别为被玩家所控制的玩家人物(Hero)和由系统所控制的外部人物(Enemy),游戏中的主要情节就是Hero与 Enemy之间的战斗,双方互相发射子弹击打对方。直到Hero把Boss 打死了,游戏胜利。Hero如果死亡了,游戏结束 ●游戏演示 游戏总体设计 ●总体类图 游戏里的所有行为 游戏里的所有角色 游戏总体设计 ●设计方法 整个类结构采用自下而上的方法,一层一层往上抽象,每次往上抽象,都抽取出不变的东西,保留变化的东西在下面,直到根类Element。 ●最根本的思想 实现代码的最大复用。使系统具有良好的扩展性。 比如以后升级游戏就很方便。 两大OO原则 ●1、封装变化(参考《Head First设计模式》) 找出程序中可能需要变化的地方,把他们独立出来,不要和那些不需要变化的代码混在一起。从另外一个角度也可以说成把不变的东西抽出来,达到代码复用。 举例:Roles这个父类中的Move()方法中的代码被子类直接复用,不需要变化,因为这些代码是不需要变化的。这样保证了代码的复用 Roles中的Move()代码 protected override void Move() { switch (dir) { ……. } } Hero中的Move()代码 protected override void Move() { base.Move(); …….. } ●2、针对超类型编程,而不是针对实现编程 (原文:针对接口编程,而不是针对实现编程) 这是这个游戏最核心的思想,这就是为什么这个游戏有那么多抽象类而不是具体类的原因。其实这个思想的本质就是面向对象中多态的思想。利用这个多态可以实现系统的弱耦合,使系统具有更大的扩展性。 对修改关闭,对扩展开放。----《Head First设计模式》 public void AddElement(Element el) { if (el is Hero) { myHero = (Hero)el; return; } if (el is MissileHero) { missileHero.Add((MissileHero)el); return; }…… 这段代码体现了多态的一个思想:对象可以表示为多个类型的能力 针对超类型编程 单件模式 ●单件模式 确保一个类只有一个实例,并提供全局访问点。 对有些类来说,只有一个实例很重要,比如线程池,注册表,文件系统等。 游戏中由于角色,元素比较多,在游戏中设计了一个HitCheck类,该类负责控制游戏中所有元素的增加,删除,绘制等,是游戏的主控类,该类在整个游戏中只能有一个实例,如果该主控类类可以被实例化多次,那么游戏就会相当混乱,整个游戏就会失去控制。 单件模式 ●实现代码 两个静态(类的引用,获取实例的方法)。一个私有构造函数。 public class HitCheck { //记录该类唯一的实例 private static HitCheck instance; //私有构造函数,确保类不能在类外被实例化 private HitCheck() { } //获取唯一类的实例 public static HitCheck GetInstance() { if (instance == null) { instance = new HitCheck(); } return instance; }} 问题:多线程问题 策略模式 ●策略模式 定义了算法族,分别封装起来,让他们之间可以相互替换,此模式的算法可以独立于使用它的客户而变化 游戏中,每个角色产生子弹的方式是不一样的,我们可以设计不同的子弹产生方式,并让他们可以相互替换,这些发射子弹

文档评论(0)

502992 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档