1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。本科毕业设计( 论文) 基于VC+的推箱子游戏设计与实现学 院 自动化学院 专 业 电子信息科学与技术 年级班别 级( 2) 班 学 号 学生姓名 吕文财 指导教师 _ 张学习 _ _ 6月基 于 VC+ 的 推箱子游 戏 的 设计与实现 吕文财 自 动 化 学 院 摘 要近年来随着科技的飞速发展, Visual C+语言的应用正在不断深入。Visual C+语言是当今国际上非常流行的计算机高级编程语言之一, 它是面向对象的可视化集成编程系统。它不但具有程序框架自动生成、 灵活方便的类管理、 代码编写和界面设计集成交互操作、 可开发
2、多种程序等优点, 而且经过简单的设置就可使其生成的程序框架支持数据库接口、 OLE2, WinSock网络、 3D控制界面。它更以自动编译功能和高级除错功能著称。因此, 广泛受到编程人员青睐。不但适合作为系统描述语言, 也用来编写系统软件, 还能够用来编写应用软件和设计游戏等。本论文着重分析用Microsoft Visual C+语言实现一个较为简单的推箱子游戏, 旨在介绍推箱子游戏的实现方法, 并逐步介绍Microsoft Visual C+6.0图形编程的方法和技巧。本设计经过主界面对话框类、 关口选择对话框类、 帮助对话框类三大类以及键盘操作模块、 游戏规则模块、 地图文件读取模块、 背
3、景音乐播放模块、 地图绘制模块, 共五大模块构成。实现了任意关数选择、 难度依次加大、 游戏步数记录、 背景音乐播放、 游戏帮助、 胜负判断等多个功能, 采用图形函数的使用实现了一个完整的推箱子游戏界面, 界面清晰可见。关键词: 推箱子, c+语言, 模块, 图形编程AbstractIn recent years, with the rapid development of science and technology, Visual C + + language application are continuously in depth. Visual C + + language is v
4、ery popular on the current international advanced programming languages of the computer, it is an object-oriented programming system integration of visualization. It not only has the program frame automatically generate, flexible convenient class management, coding and interface design integration,
5、can develop a variety of interactive operation procedures and other advantages, and through the simple Settings will be able to make its generated programming framework support database interface, OLE2, WinSock network, 3 D control interface. It more for automatic compiler function and senior debugg
6、ing is famous for its function. Therefore, widely favored by programming staff. Not only for the system description language, which is also used to write the system software, can also be used to write application software and game design, etc.This paper focuses on analyzing with Microsoft Visual C +
7、 + language realize a relatively simple pushed box game, is to introduce the realization method of game pushed box, and gradually introduce Microsoft Visual C+ 6.0 graphics programming methods and techniques. This design through the main interface dialog box class, pass options dialog box class, hel
8、p dialog box class three categories and keyboard module, the rules of the game module, map reading modules, background music files play module, map module, a total of five module. Realize the random number, the difficulty in turn off choice, the more steps, background music record game play, the gam
9、e won more than judgement to help, the function, the use of graphics functions achieved a complete pushed box game interface, interface can be clearly seen.Key word: boxman, C+ language, modules, graphics programming目 录1 绪论11.1课题研究的意义11.2国内外研究动态21.2.1推箱子游戏的研究动态21.2.2国内外研究现状及分析32 课题研究相关技术与分析62.1 Micr
10、osoft Visual C+6.0概述62.2 可行性研究与需求分析73 推箱子游戏的总体设计93.1推箱子游戏概述93.2 推箱子游戏的基本要求93.1.1 开发软件及硬件环境要求93.1.2 运行环境93.1.4 测试环境操作系统与硬件配置93.1.4 界面要求93.3 推箱子游戏具有的功能103.3 推箱子游戏系统设计113.3.1 推箱子游戏功能架构113.3.2 程序结构设计113.3.3 出错处理设计123.3.4 维护设计133.4游戏界面设计133.4.1 游戏主界面的设计133.4.2 游戏菜单结构的设计133.4.3 游戏中关口选择对话框的设计144 推箱子游戏的设计与实
11、现154.1推箱子游戏的界面实现154.1.1 游戏菜单的实现154.1.2 游戏帮助对话框的实现164.1.3 游戏关口选择对话框的实现174.1.4 游戏播放背景音乐的实现194.2推箱子游戏的核心算法设计与实现194.2.1 地图文件读取模块的设计与实现194.2.2 地图绘制模块的设计与实现204.2.3 键盘操作模块的设计与实现224.2.4 游戏规则模块的设计与实现234.2.5 主对话框的设计与实现245 推箱子游戏的整合测试255.1 主菜单和界面显示功能的测试演示255.2 键盘操作功能的测试演示255.3 箱子放置到指定位置时变色显示功能的测试演示265.4 支持地图扩展功
12、能的测试演示275.5 游戏胜负判断功能的测试演示285.6 游戏帮助功能的测试演示29总 结31参考文献32致 谢331 绪论1.1课题研究的意义当前, 在中国乃至世界, 游戏产业已经逐渐成为微控制器领域的一个相当庞大以及重要的分支, 而关于这方面的高级人才却仍甚是缺乏。尽管中国的程序员多如牛毛, 但依然无法填补我们日常生活中的游戏需要, 普遍质量也无法达标。迄今国内游戏公司已经达200多家, 市场上运营的游戏也达到300款之多, 但与欧美、 韩国等国家的游戏发展程度还有不小差距。中国有广阔的游戏市场, 宽阔的发展空间, 无限的继续挑战和剧增的玩家队伍。随着网络的兴起, 巨大的市场需求量使中
13、国在短短几年, 已经从无到有, 从陌生到熟知, 从掌握到运用。游戏必将成为网络竞争中的主角, 它的商业利益和商业价值无法估量。中国, 人口众多的国家, 随着人们生活水平的提高, 温饱早就不是最终目的, 我们寻求的是更加多姿多彩的生活, 那么我们怎么能错过游戏这一最佳休闲娱乐项目呢? 因此中国游戏发展前景一片大好1! 小游戏是一个较模糊的概念, 它是相对于体积庞大的单机游戏及网络游戏而言的, 泛指所有体积较小、 玩法简单的游戏, 一般这类游戏以休闲益智类为主, 有单机版有网页版, 在网页上嵌入的多为FLASH格式。当下小游戏主要是指在线玩的flash版本游戏, 统称小游戏, 其实小游戏还包含单机
14、游戏, 小型游戏机等。一般游戏大小小于10m的游戏都统称为小游戏, 一些街机类小游戏。如植物大战僵尸, 捕鱼达人, 合金弹头等归纳其中, 因其游戏安装简便, 耐玩性强, 无依赖性而广受白领及小朋友的喜爱。小游戏的发展时间不长, 而且也一直未收到广泛关注, 当时中国大陆比较知名的小游戏网站, 像4399, 7k7k和2144, 基本以收集大量的小游戏并摆列在网站上为卖点。到 , 这些网站收集的小游戏多达2万到8万款。4399小游戏是这类网站的代表, 号称为中国最大的Flash游戏集中网站, 在 提供了8万余款Flash游戏, 并将游戏分类为: 动作、 体育、 益智、 射击、 搞笑、 冒险、 棋牌
15、、 策略、 敏捷、 综合、 休闲、 装扮、 儿童和测试游戏2。由 底开始, 网页游戏的市场日趋火爆, 小游戏作为网页游戏的一个重要组成部分也受到了广泛的关注。另外像Facebook, Myspace及国内的校内网、 开心网等等一大批SNS社交网站的迅速崛起, 集成小游戏几乎成为了这些SNS网站留住用户的不二法则。而体积较小, 休闲和娱乐性很强的小游戏, 特别是Flash小游戏就成了SNS网站最热门的选择。当前小游戏行业发展面临巨大挑战。首先是小游戏网站多如牛毛, 竞争非常激烈; 其次, 小游戏行业已经不像以前那样风光, 利润率相对以前低了很多, 不再属于暴利行业, 而且小游戏的推广成本越来越高
16、, 用户对网站的要求也逐渐加大; 最后是潜在的政策风险已经出现, 例如网络文化运营许可证在小游戏网站的出现。经典的推箱子是一个来自日本的古老游戏, 目的是在训练你的逻辑思考能力。在一个狭小的仓库中, 要求把木箱放到指定的位置, 稍不小心就会出现箱子无法移动或者通道被堵住的情况, 因此需要巧妙的利用有限的空间和通道, 合理安排移动的次序和位置, 才能顺利的完成任务。推箱子游戏是非常经典的游戏, 类似的游戏你也一定早就玩过。比如当今流行的切绳子、 愤怒的小鸟等游戏, 能在生活中给我们带来莫大的快乐, 提升我们的大脑运算能力, 开发我们的智慧。不但在PC机上, 在手机和很多PSP上都是十分常见而且流
17、行。能够说, 这种智力型游戏, 给这个社会制造了许多快乐, 对儿童、 少年的成长起到非常重大的作用。记得几年前, 推箱子在PC机上刮起了一股不小的益智类游戏的旋风, 现在许多资深玩家也都对推箱子赞不绝口, 可见有深度的益智类游戏是非常受大家欢迎的。推箱子游戏1981年由日本人今林宏行首创, 是在1982年12月由Thinking Rabbit 公司首次发行, 名”仓库番”。箱子只能够推, 不能够拉, 而且一次只能推动一个, 胜利条件就是把所有的箱子都推到目的地。推箱子游戏是一种老少皆宜的益智游戏, 既能够开发青少年学生的智力, 又能够防止老年痴呆症, 全家一起攻关还能够促进家庭和睦。1.2国内
18、外研究动态1.2.1推箱子游戏的研究动态这款经典的手机游戏, 现在电脑软件版, 网页版, 手机安卓、 塞班版, 3D版本都早就问世。最出名的当属唐图科技的宇宙推箱子。以推出高品质Symbian游戏闻名的唐图科技, 这次是将经典的推箱子游戏搬上了手机。在这款已经被多次翻新的经典益智游戏中, 唐图科技的开发人员依然没有让我们失望。独特的创意, 精美的画面, 丰富的效果, 以及方便的操作, 处处体现出唐图科技对于玩家的了解和独到的设计。这款基于X-Factory游戏引擎开发的推箱子游戏, 首先将玩家熟悉的主角换成了一艘宇宙飞船, 游戏的场景也相应地移到了浩瀚的宇宙空间中, 而被推动的箱子则变成了不断
19、闪烁的能量块。游戏场景层次非常丰富, 令人眼前一亮, 能够说是一个完全不一样的推箱子游戏。玩家操纵的飞船, 在移动时会从尾部喷出动态的火焰, 飞船的飞行动作平滑流畅, 操作非常爽快。当能量块被推到正确的位置时, 会不断地发出绿光, 提示已经完成一部分。这些丰富的效果, 都依赖于X-Factory的强大功能和唐图科技开发人员的精彩创意。3D推箱子黄金版Magic Sokoban Gold 是一个古典的解谜益育游戏。五彩缤纷的图像和3D立体构图使箱子真实可见。游戏很容易操纵, 用一只鼠标即可, 游戏超过1000个水平。Flash小游戏 小狐狸推箱子松鼠推箱子吉豆推箱子机器人推箱子等一系列新版游戏,
20、 甚至能够利用道具, 更是将这款最经典的推箱子发挥到极致。从1982年的”仓库番”到现在各种版本、 各种平台的推箱子系列游戏, 这款经典的智力型游戏长盛不衰, 可见其在智力开发上给人类教育发挥了不小的推动作用。1.2.2国内外研究现状及分析C+这个词在中国大陆的程序员圈子中一般被读做”C加加”, 而西方的程序员一般读做”C plus plus”, ”CPP”。 C+是一种使用非常广泛的电脑程式设计语言。它是一种静态资料类型检查的, 支援多范型的通用程式设计语言。C+支援程序化程式设计、 资料抽象化、 面向对象程式设计、 泛型程式设计、 基于原则设计等多种程式设计风格3。Stroustrup工作
21、起于1979年的C with Classes。这个构思起源于 Stroustrup 做博士论文时的一些程式撰写经验。她发现Simula具备很利于大型软件开发的特点, 但Simula的执行速度太慢, 无法对现实需求发挥功效; BCPL虽快得多, 但它过于低阶的特性, 使其不适于大型软件的开发。当Stroustrup开始在贝尔实验室工作时, 她有分析UNIX核心关于分散式计算的问题。回想起她的博士论文经验, Stroustrup开始为C语言增强一些类似Simula的特点。之因此选择C, 是因为它适于各种用途、 快速和可移植性。除了C和Simula之外, 同时也从其它语言中取得灵感, 如ALGOL
22、68、 Ada、 CLU以及ML。刚开始时, 类别、 衍生类别、 储存类型检查、 内联和默认参数特性, 都是透过Cfront引入C语言之中。1985年10月出现了第一个商业化发布。1983年, C with Classes改命名为C+。加入了新的特性, 其中包括虚函数、 函式名和运算符重载、 参考、 常数、 使用者可控制的自由空间储存区控制、 改良的型别检查, 以及新的双斜线( /) 单行注解风格。1985年, 发布第一版C+程式设计语言, 提供一个重点的语言参考, 至此还不是官方标准。1989年, 发布了Release 2.0。引入了多重继承、 抽象类别、 静态成员函式、 常数成员函式, 以
23、及成员保护。1990年, 出版了The Annotated C+ Reference Manual。这本书后来成为标准化的基础。稍后还引入了模板、 异常处理、 命名空间、 新的强制类型转换, 以及布尔。随着C+语言的演变, 也逐渐演化出相应的标准程式库。最先加进C+标准函式库的是串流I/O程式库, 其用以取代传统的C函式, 如printf和scanf。随后所引入的程式库中最重要的便是标准模板库, 简称STL4。多年后, 一个联合的ANSI-ISO委员会于1998年对C+标准化( ISO/IEC 14882: 1998) 。在官方释出1998标准的若干年后, 委员会处理缺陷报告, 并于 发布一个
24、C+标准的修正版本。 , 一份名为Library Technical Report 1( 简称TR1) 的技术报告释出。虽然还不是官方标准的一部分, 不过它所提供的几个扩展可望成为下一版C+标准的一部分。几乎所有当前仍在维护的C+编译器皆已支援TR1。随后, C+不断增加新特性。虚函数( virtual function) 、 操作符重载( operator overloading) 、 多重继承( multiple inheritance) 、 模板( template) 、 异常处理( exception) 、 RTTI(Runtime type information)、 命名空间( n
25、amespace) 逐渐纳入标准。1998年国际标准组织( ISO) 颁布了C+程式设计语言的国际标准ISO/IEC 14882-1998。 另外, 就当前学习C+而言, 能够认为它是一门独立的语言; 它并不依赖C语言, 我们能够完全不学C语言, 而直接学习C+。因此有部分人认为在大多数场合中, C+完全能够取代C语言5。C+语言发展大概能够分为三个阶段: 第一阶段从80年代到1995年。这一阶段C+语言基本上是传统类型上的面向对象语言, 而且凭借著接近C语言的效率, 在工业界使用的开发语言中占据了相当大份额; 第二阶段从1995年到 , 这一阶段由于标准模板库( STL) 和后来的Boost
26、等程式库的出现, 泛型程式设计在C+中占据了越来越多的比重性; 第三阶段从 至今, 由于以Loki、 MPL等程式库为代表的产生式编程和模板元编程的出现, C+出现了发展历史上又一个新的高峰, 这些新技术的出现以及和原有技术的融合, 使C+已经成为当今主流程式设计语言中最复杂的一员。当前最新的C+标准是 9月发布的ISO/IEC 14882: 1, 又称C+0x或C+11。现在的最新版C+编译器集合在Microsoft Visual Studio 软件里面, 包含C+, Visual basic, C#, J#, .net。等, 其中, VC开发环境的版本已经升级至Microsoft Visu
27、al C+ , 对C+的支持更加全面稳定, 建议电脑性能好的能够使用此版本。当前微软公司已经停止对VC+6.0系列产品的维护, 继而转向.NET平台环境, 新的MS 、 MS 等将更符合新世纪通用开发需求6。根据Effective C+第三版第一条款的描述, 现在C+由以下四个”子语言”组成: 1、 C子语言。C+支持C语言的几乎全部功能, 主要是c89的部分, 在语法上与C语言仅有极微妙的差别(如括号表示式的左右值性, 具体请参考C+标准文献)。2、 面向对象的C+语言。C+语言原本不具备面向对象的设计功能, 然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟, C+语言也开发出
28、了支持面向对象功能的版本。3、 泛型编程语言。C+强大( 但容易失控的) 模板功能使它能在编译期完成许多工作, 从而大大提高运行期效率。4、 STL( C+标准模板库, Standard Template Library) 。随着STL的不断发展, 它已经逐渐成为C+程序设计中不可或缺的部分, 其效率可能比一般的native代码低些, 可是其安全性与规范性使它大受欢迎7。另外, 包含在TR1等中的C+0x将实现的新功能在开发和测试中。在Windows版本系列中, 下列特点是始终保持并不断发展的; 图形化的窗口界面。多任务方式的运行环境。虚拟化的设备接口。以虚拟内存为核心的内存管理。网络功能及应
29、用程序, 包括Miscrosoft网络、 通用基础网络协议等。多媒体功能及应用程序, 包括图形、 声音、 动画和开发工具等。功能丰富的用户管理工具和实用软件8。2 课题研究相关技术与分析2.1 Microsoft Visual C+6.0概述VC 作为一个主流的开发平台一直深受编程爱好者的喜爱, 可是很多人却对它的入门感到难于 上青天, 究其原因主要是大家对她错误的认识造成的, 严格的来说 VC+不是门语言, 虽然它 和 C+之间有密切的关系,如果形象点比喻的话, 能够 C+看作为一种”工业标准”, 而 VC+ 则是某种操作系统平台下的”厂商标准”,而”厂商标准”是在遵循”工业标准”的前提下扩
30、展而来的。 VC+应用程序的开发主要有两种模式, 一种是 WIN API 方式, 另一种则是 MFC 方式, 传统的 WIN API 开发方式比较繁琐, 而 MFC 则是对 WIN API 再次封装, 因此 MFC 相对于 WIN API 开 发更具备效率优势9。Visual C+ 6.0, 简称VC或者VC6.0, 是微软推出的一款C+编译器, 将”高级语言”翻译为”机器语言( 低级语言) ”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后, 随着其新版本的不断问世, Visual C+已成为专业程序员进行软件开发
31、的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0), 但它的应用有很大的局限性, 只适用于Windows 、 Windows XP和Windows NT4.0。因此实际中, 更多的是以Visual C+6.0为平台3。Visual C+6.0由Microsoft开发, 它不但是一个C+ 编译器, 而且是一个基于Windows操作系统的可视化集成开发环境( integrated development environment, IDE) 。Visual C+6.0由许多组件组成, 包括编辑器、 调试器以及程序向导AppWizard、 类向导Class Wiza
32、rd等开发工具。 这些组件经过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后, 随着其新版本的不断问世, Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0), 但它的应用的很大的局限性, 只适用于Windows ,Windows XP和Windows NT4.0。因此实际中, 更多的是以Visual C+6.0为平台10。Visual C+6.
33、0以拥有”语法高亮”, 自动编译功能以及高级除错功能而著称。比如, 它允许用户进行远程调试, 单步执行等。还有允许用户在调试期间重新编译被修改的代码, 而不必重新启动正在调试的程序。其编译及创立预编译头文件(stdafx.h)、 最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、 编译及连结的时间花费, 在大型软件计划上特别显著。由于C+是由C语言发展起来的, 也支持C语言的编译。6.0版本是使用最多的版本, 很经典。最大的缺点是对于模版的支持比较差。现在最新补丁为SP6, 推荐安装, 否则易出现编译时假死状态。仅支持Windows操作系统。当前发现与windows 7兼容性不
34、好, 安装成功后可能会出现无法打开cpp文件的现象。Visual C+是比较实用的开发工具。首先它的核心MFC类库已是事实上的业界标准; 其次, 它的可视化开发工具紧密集成, 可用于开发非常专业的Windows、 Web和企业级应用程序; 第三, Visual C+的联机帮助已被集成到MSDN( 微软开发者网络) 库中去了, MSDN包含了微软大部分产品的技术文档和支持资料, 内容相当丰富, 是程序员不可多得的参考材料, 现在MSDN库随着Visual C+6.0一起发行, 实在是大家的福音。作为当今流行的开发环境, Visual C+6.0具有如下特点: (1) Visual C+6.0提供
35、了开发Windows环境下的应用程序的简捷、 快速和实用的开发环境。利用Visual C+6.0开发Windows应用程序具有很高的效率。(2) Visual C+6.0提供了MFC类库, 开发者只需要做少量的工作就能够得到功能齐全的Windows应用程序。(3) Visual C+6.0提供了高度集成的工具集, 使得在开发应用程序的全过程中都保证了较高的效率。集成化便于程序开发, 开发者能够再诸如编辑、 建立、 调试等不同的任务之间快速切换, 甚至能够同步进行。(4) 图形化的可视特点使得Visual C+6.0简单易学11。2.2 可行性研究与需求分析问题定义的可行性分析是软件生存周期的第
36、一阶段。可行性研究的目的是实用最少的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的实质是要进行一次系统分析和设计的简化过程, 也就是在较高层上以抽象的方式进行系统分析和设计的过程。一般来讲, 应该从技术、 经济和操作等方面来研究每种解法的可行性。( 1) 要求作为一款极为经典的游戏, 推箱子吸引了一代代玩家乐此不疲, 本例经过使用Visual C+6.0进行设计, 使用了API函数, 将书本知识应用到实际程序中, 以便于为以后的进一步学习奠定基础。本例要求大量使用API函数, 熟悉消息映射机制的具体实现。( 2) 目标 推箱子游戏的设计目标完成一个比较简单的游戏, 使之能够实现推箱子
37、游戏的基本功能, 成为一个比较完整的游戏框架。该游戏作为一个单机版的游戏界面, 基本达到推箱子游戏的基本功能。经过练习能进一步学习API函数的使用。( 3) 可行性研究方法 决定软件的可行性研究方法主要有: 成本效益分析, 对估算问题的看法, 软件的作用范围, 软件的成本估算, 速度安排等。( 4) 决定可行性的主要因素 决定可行性的四个主要方面有: 经济因素, 技术因素, 法律因素, 不同方案。由于该游戏本身的规模不大, 几乎能够再因此的计算机系统上运行, 因此对于硬件和软件没有太苛刻的要求, 各种游戏平台, 大型电脑、 家用游戏机等, 甚至连掌上型的小游戏机都能顺畅运行。( 5) 需求分析
38、 推箱子是一个脍炙人口的游戏, 因此大家对它都很是熟悉, 现在的要求是尽量设计一个合格的推箱子游戏。作为一个广受关注的游戏, 现在有大量的关于推箱子的资料, 我尽量吸取已有的成功的经验, 做到精益求精。3 推箱子游戏的总体设计3.1推箱子游戏概述推箱子是一个来自日本的古老游戏, 目的是在训练玩家的逻辑思考能力。在一个狭小的仓库中, 要求把木箱放到指定的位置, 稍不小心就会出现箱子无法移动或者通道被堵住的情况, 因此需要巧妙的利用有限的空间和通道, 合理安排移动的次序和位置, 才能顺利的完成任务。在游戏主界面中, 会出现一个小人、 若干个箱子和箱子放置点。玩家需要利用方向键控制小人上下左右移动,
39、 并推动界面中的箱子到达指定的箱子放置点。3.2 推箱子游戏的基本要求3.1.1 开发软件及硬件环境要求Intel Pentium 4 2.0GHZ,512内存, 80G硬盘。Microsoft Windows Professional。Microsoft Visual C+6.0。3.1.2 运行环境Intel Pentium 2及以上处理器, 32M以上内存, 20M以上硬盘空间。Microsoft Windows 或XP以上操作系统。800600或以上的屏幕分辨率。3.1.4 测试环境操作系统与硬件配置Microsoft Windows Professional。Microsoft Wi
40、ndows XP Professional。有MFC环境的动态库文件, 如MFC42.dll等。Intel Pentium 4 2.0GHZ,512内存, 100G硬盘剩余空间。3.1.4 界面要求采用Windows标准界面, 只需要使用键盘和鼠标即可完成全部操作。而且操作相对简单, 不需过多地对操作人员进行培训并提供帮助说明。3.3 推箱子游戏具有的功能( 1) 能够显示主菜单和界面游戏需要提供主菜单让玩家进行游戏设置, 同时能够把地图文件中的信息转换成为图像显示到主游戏界面上。( 2) 能够实现键盘操作功能能够接收到键盘输入的方向键信息, 并根据不同的方向键把游戏人物移动到相应的位置。例如
41、, 当玩家单击方向键”上”时, 如果向上的位置是可移动的, 那么就当把游戏人物向上移动一个方格。( 3) 能够把放置到位置上的箱子进行变色显示当玩家把箱子推到指定位置的格子时, 需要把这个箱子进行变色。这样就能明确的显示出该箱子已经放置到指定的位置上。此游戏设计为当推到指定位置的格子时, 箱子变为红色, 边框为橙色。( 4) 支持地图扩展功能玩家能够自己扩展原游戏地图文件, 从而生成新的游戏地图。按照表4.2.2中地图文件中数据与图像对照说明进行游戏地图设计。设计完毕后重新打开游戏, 选择对应关口即可呈现。( 5) 游戏胜负判断功能在游戏中, 当玩家把所有的箱子都推到箱子放置点时, 玩家胜利经
42、过当前游戏关口, 进行下一关口的游戏。如果玩家无法将指定的箱子全部推倒放置点时, 玩家失败。玩家能够选择重新进行当前关口的游戏, 还是退出游戏。( 6) 支持关口选择功能玩家在游戏中可自行选择需要挑战的关口。当玩家点击菜单中”游戏设置关口选择”, 并在对话框中输入所要的关口数字, 设置完毕后点击开始游戏即可打开所需关口。( 7) 游戏支持背景音乐功能经过主菜单, 在游戏开始后, 能够选择播放或者禁止播放背景音乐。默认为禁止播放。玩家也能够经过修改背景音乐对应的WAV文件进行背景音乐的替换, 充分满足玩家的个性化需求。( 8) 游戏提供帮助说明在游戏菜单中, 提供一个使用说明项, 以方便对本游戏
43、不了解的玩家对游戏进行操作和使用。鉴于本游戏家喻户晓, 故在此处只是提供比较简单的说明。3.3 推箱子游戏系统设计3.3.1 推箱子游戏功能架构根据推箱子游戏基本要求以及相关拓展功能, 进行游戏结构功能设计, 游戏功能框架图如图3.1所示。图3.1 推箱子功能框架3.3.2 程序结构设计游戏共由3个类和5个模块组成, 如图3.2所示。图3.2 游戏主要类结构主界面对话框类: 主要负责主界面、 菜单及各个窗口类对象的创立和调用等处理。键盘操作模块: 主要负责接收玩家键盘输入并进行箱子移动等处理。关口选择对话框类: 主要负责游戏挑战关口的选择和设置。地图文件读取模块: 主要负责读取地图文件并进行相
44、应的解析工作。地图绘制模块: 主要负责将地图数组中的数据绘制成地图图像。游戏规则模块: 主要负责游戏规则的判断。背景音乐播放模块: 主要负责游戏中背景音乐的播放。帮助对话框类: 主要负责帮助提示的显示及其它辅助信息。3.3.3 出错处理设计( 1) 出错输出信息当游戏中出现错误, 采用弹出对话框的方式提示用户出现错误。( 2) 出错处理对策当游戏中出现错误, 采用中止当前游戏并重新开始新游戏的方法处理游戏中的错误。3.3.4 维护设计由于整个推箱子游戏项目在开发完成后, 基本不会有太多的变动, 因此维护的主要任务是把用户使用中出现的问题解决即可。3.4游戏界面设计3.4.1 游戏主界面的设计推
45、箱子的游戏主界面设计, 如图3.3所示。图3.3 设计的游戏主界面其背景为黑色, 墙壁采用灰色格子, 通道为蓝色, 箱子为橘黄色; 右边等级和已走步数方块采用白色背景红色字体。3.4.2 游戏菜单结构的设计推箱子的游戏菜单设计如图3.4 所示。图3.4 设计的游戏菜单结构3.4.3 游戏中关口选择对话框的设计关口选择对话框的设计如图3.5所示。图3.5 关口选择对话框当玩家在对话框中输入关口数字, 并重新点击开始游戏时, 游戏会自动选择对应关口的地图级别开始新游戏。4 推箱子游戏的设计与实现推箱子游戏的Visual C+工程采用MFC对话框模式进行开发。本节主要讲解推箱子游戏各个功能模块的代码
46、实现。4.1推箱子游戏的界面实现4.1.1 游戏菜单的实现在推箱子游戏中, 经过如下几步即可实现游戏的菜单。( 1) 在推箱子游戏工程的资源中添加一个菜单资源, 其属性如表4.1所示表4.1 主菜单属性ID类 别说 明IDR_MAIN_MENU弹出菜单游戏的主菜单IDR_START_GAME菜单栏开始游戏IDR_EXIT_GAME菜单栏退出游戏IDR_SELECT_LEVEL菜单栏关口选择IDR_PLAY_MUSIC选择菜单播放音乐IDR_HELP菜单栏帮助IDR_ABOUT菜单栏关于( 2) 给每个菜单栏添加响应函数到CboxManDlg类中。( 3) 菜单响应函数的实现, 背景音乐的调用, 各种菜单调用响应, 要运用到的代码如下: ( 备注: 由于代码较多, 而且基本类似, 故只列出比较代表性的部分。) BOOL CboxManDlg:OnInitDialog()
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100