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