模板方法这个名字看着非常陌生,事实上在游戏中大量地使用了模板方法。由于游戏中存在玩家、NPC和静态物体等不同的对象,使用多态特性能非常好地进行区分。
模板方法的定义是:模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。

模板方法使得子类能够在不改变算法结构的情况下,又一次定义算法中的某些步骤。


举个最简单的玩家和NPC死亡时的逻辑:
流程图例如以下:


代码例如以下
// MVC.cpp : 定义控制台应用程序的入口点。

// #include "stdafx.h" #include <iostream> #include <string> #include <sstream> using namespace std; class Object { public: Object():m_dead(0) { } void SetDead() { cout<<"========================="<<endl; BeforeDead(); Ondead(); AfterDead(); cout<<"========================="<<endl; } virtual void BeforeDead() { } virtual void AfterDead() { } void Ondead() { cout<<"Skill End"<<endl; cout<<"you are dead!"<<endl; } bool IsDead() { return m_dead; } private: bool m_dead; }; class Player:public Object { public: virtual void BeforeDead() { cout<<"Interrupt trade if you are trading!"<<endl; } virtual void AfterDead() { cout<<"nothing!"<<endl; } }; class NPC:public Object { public: virtual void BeforeDead() { cout<<"Call BeforeDead Lua Script!"<<endl; } virtual void AfterDead() { cout<<"Call AfterDead Lua Script!"<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) { auto_ptr<Player> player(new Player()); auto_ptr<NPC> npc(new NPC()); cout<<"Player dead!"<<endl; player->SetDead(); cout<<"NPC dead!"<<endl; npc->SetDead(); }

模板方法的长处是将共性在父类中实现,将差异化在不同的子类中实现。

设计模式在游戏中的应用--模板方法(七)相关推荐

  1. 「补课」进行时:设计模式(11)——游戏中的策略模式

    1. 前文汇总 「补课」进行时:设计模式系列 2. 游戏中的策略模式 我是一个很喜欢玩游戏的人,周末在家打打游戏是真的很开心. 回想起来当年上大学的往昔峥嵘岁月,那时候基本上是一个人在玩游戏,背后围着 ...

  2. 设计模式在游戏中的应用说明(一)

    为了方便大家更加系统地学习和掌握各种常用的设计模式,下面通过一个综合实例--"多人联机射击游戏"来学习如何在实际开发中综合使用设计模式. 反恐精英(Counter-Strike, ...

  3. 【功能开发篇】游戏中的时间系统修改Unity自带组件运行速度

    "功能开发篇"系列文章记录了我在平时工作中遇到的问题以及一些和游戏功能相关的项目经验. 目录 1. 插件介绍 2. 核心类功能拆解 3. Timeline深入 修改Rigidbod ...

  4. 23种设计模式在MMORPG游戏中的应用

    设计原则和设计模式是软件工程领域的两个重要概念,设计原则提供了编写高质量.可维护代码的指导思想,而设计模式则为特定问题提供了经过验证的解决方案.下面是7大设计原则和23种设计模式的总结: 7大设计原则 ...

  5. 【转】多人联机射击游戏中的设计模式应用(一)

    为了方便大家更加系统地学习和掌握各种常用的设计模式,下面通过一个综合实例--"多人联机射击游戏"来学习如何在实际开发中综合使用设计模式. 反恐精英(Counter-Strike, ...

  6. 有关计算机代码的游戏,七灯游戏是一款经典的益智类游戏。游戏中,有七盏灯排成一圈,如图a所示,初始时灯的开关状态随机生成,操作其中某一盏灯,则可以切换该灯的“开/关”状态,同时,这盏灯-组卷网...

    七灯游戏是一款经典的益智类游戏.游戏中,有七盏灯排成一圈,如图a所示,初始时灯的开关状态随机生成,操作其中某一盏灯,则可以切换该灯的"开/关"状态,同时,这盏灯对面的两盏灯也会切换 ...

  7. 游戏开发入门(二)游戏中的设计模式

    视频链接:游戏开发入门(二)游戏中的设计模式(3节课 时常:约2小时40分钟) 该视频主要围绕游戏中常见的设计模式展开讲解并实践,需要大家多多实践与理解 笔记与总结(请先学习视频内容): 1.有必要深 ...

  8. 游戏中常用的设计模式

    内容会持续更新,有错误的地方欢迎指正,谢谢! 设计模式存在的意义:大多数是为了保证"低耦合高内聚" 1.单例模式 一个类只能有一个实例,单例非常重要经常用,比如游戏页面管理,现在我 ...

  9. 趣谈设计模式 | 状态模式(State):如何实现游戏中的状态切换?

    文章目录 案例:马里奥积分竞赛 有限状态机 分支逻辑法 查表法 状态模式 状态模式与策略模式 总结 完整代码与文档 案例:马里奥积分竞赛 喜欢马里奥的小伙伴们都应该知道,前不久马里奥为了庆祝35周年, ...

  10. 多人联机射击游戏中的设计模式应用

    转:http://blog.csdn.net/lovelion/article/details/8262987 反恐精英(Counter-Strike, CS).三角洲部队.战地等多人联机射击游戏广受 ...

最新文章

  1. Cookie简单使用方法
  2. Docker Overlay 介绍
  3. 数据库服务器(SQL SERVER)的安全设置
  4. 怎么在php项目安装tp5框架,框架安装与基本配置
  5. 在centos服务器上安装配置私人邮箱,并在web端管理邮件
  6. 宝塔无法安装php memcached,宝塔面板安装Memcached缓存加速wordpress
  7. Linux环境下实现一个简单socket通信
  8. MATLAB电路仿真搭建教程
  9. 【收藏】QCIF、 CIF、2CIF、DCIF、D1(4CIF)格式介绍
  10. python中空集怎么表示
  11. H5页面的测试点整理
  12. 购买二手MacBook是否正品,请仔细检查以下情况,可防止翻车
  13. 老照片修复的方法哪个好用?老照片修复技巧分享
  14. yaffs2的补丁文件patch-ker分析
  15. crash工具使用方法
  16. 关于AQS中的enq方法的理解
  17. NotePad++ 打开多个文件
  18. 解决jquery版本过低引发的XSS跨站安全漏洞
  19. 实现个hash_map容器类玩玩 - 苍梧 - 博客园
  20. 机器学习笔记 3 ——Naive Bayes

热门文章

  1. android 代码操作.db demo,Android实现商品展示效果
  2. paddle serving
  3. Kaggle电影数据集:movies_metadata.csv
  4. octave存储文档
  5. button按钮的四种监听及实例
  6. POST 和GET传输的最大容量分别是多少?
  7. 杭电HDUacm2037
  8. tensorflow学习笔记(2):创建自定义Estimator
  9. 计算机图形学完整笔记(二):光栅图形学算法
  10. Raki的读paper小记:PURE:A Frustratingly Easy Approach for Entity and Relation Extraction