APP下载

设计模式在游戏框架设计中的应用

2011-06-13

科技传播 2011年20期
关键词:子类设计模式框架

张 洁

成都东软学院,四川成都 611844

设计模式在游戏框架设计中的应用

张 洁

成都东软学院,四川成都 611844

设计模式在软件设计中起着非常重要的作用,使用设计模式可以提高软件的可维护性和复用性。模板方法模式是设计模式中常用的一种模式,本文应用该模式设计了一个Windows游戏程序框架,可在不同的视频游戏程序中使用。

设计模式;模板方法模式;Windows游戏;框架

0 引言

“模式”这个词来源于克里斯托夫·亚历山大的《模式语言》(A pattern Language)一书,书中提到:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。后来,“模式”一词被引入到计算机科学领域,成为软件设计者一直在追求的普遍性原则。设计模式并不是直接用来完成代码的编写,而是描述在各种不同的情况下,要怎么解决问题的一种方案。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。面向对象设计离不开设计模式,游戏开发自然也离不开设计模式。本文应用设计模式中的模板方法模式为不同的Windows视频游戏搭建了一个可复用的框架。

1 模板方法模式介绍

模板方法模式是《设计模式:可复用面向对象软件的基础》一书中描述的23种设计模式中的其中一种,也是最常见的几种模式之一。它在框架设计中得到了广泛的应用。通常我们会遇到这样一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一个按正确顺序调用它们的具体方法,构成一个抽象基类。子类通过继承这个抽象基类去实现各个步骤的抽象方法,而工作流程却由父类控制。换句话说,模板方法模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

2 Windows游戏程序框架设计

要设计一个可以重复使用的Windows游戏程序框架,首先要分析出在游戏程序中哪些操作是稳定的,哪些是变化的。然后用父类封装稳定的算法步骤和框架,而由子类封装可能发生变化的细节,这也正是模板方法模式的精髓。

一款Windows视频游戏程序通常应该遵循三大步骤:

1)初始化系统,准备游戏数据;

2)开始游戏循环:判定状态,并对当前状态进行处理,处理过程包括获取输入、计算并更新数据以及输出;

3)清理数据,释放系统。

也就是说,所有的Windows视频游戏程序的操作过程都是确定的,但是,在这个过程中,某些步骤的具体实现是不确定的。对于不同的游戏,需要初始化的数据不同,在循环中处理输入、更新游戏数据的方式也不同,最后要清除的数据也不同。那么,我们就可以将一个Windows游戏程序中固定的算法骨架放在父类中,而将那些随游戏变化而变化的步骤延迟到子类中再实现。

在具体的程序设计过程中,我们可以定义一个框架类,假设将其命名为CApplication。在该框架类中主要包括以下几个关键函数:定义游戏程序框架的函数Run(),初始化函数Init()、帧处理函数Frame()和清理函数Shutdown()。Run()函数部分关键代码如下所示:

在上述代码中,MyRegisterClass()和InitInstance()是每一个Windows应用程序必须要实现的功能,因此,将它们封装在框架类中。而Init()、Frame()和Shutdown()这3个函数则根据游戏的不同而不同,因此,在框架类中可以将这3个函数定义为纯虚函数,它们的具体实现则延迟到子类中。通过这种方式,我们就达到了利用模板方法模式搭建游戏程序框架的目的。

3 结论

本文采用模板方法模式搭建了一个程序框架,该框架可用于开发不同的Windows视频游戏,减少了游戏程序设计中的重复性工作。

[1]Erich Gamm, Richard Helm, Ralph Johnson, John Vlissides著.设计模式:可复用面向对象软件的基础.机械工业出版社,2000,6.

[2][美]Jim Adams著.DirectX角色扮演游戏编程.黄际洲,刘刚译.重庆大学出版社,2006,2.

[3]程杰.大话设计模式.清华大学出版社,2007,12.

[4][美]Robert C. Martin著.敏捷软件开发:原则、模式与实践.邓辉,译.清华大学出版社,2003,9.

TP31

A

1674-6708(2011)53-0171-01

张洁,助教,研究方向:图形图像处理,游戏程序设计

猜你喜欢

子类设计模式框架
“1+1”作业设计模式的实践探索
卷入Hohlov算子的某解析双单叶函数子类的系数估计
广义框架的不相交性
三维协同设计模式下的航天项目管理实践与展望
交通机电工程设计模式创新探讨
关于对称共轭点的倒星象函数某些子类的系数估计
WTO框架下
一种基于OpenStack的云应用开发框架
互动式设计模式研究
块H矩阵新的子类