基于VC++的推箱子游戏设计与实现.docx

上传人:b****8 文档编号:29781660 上传时间:2023-07-26 格式:DOCX 页数:38 大小:198.45KB
下载 相关 举报
基于VC++的推箱子游戏设计与实现.docx_第1页
第1页 / 共38页
基于VC++的推箱子游戏设计与实现.docx_第2页
第2页 / 共38页
基于VC++的推箱子游戏设计与实现.docx_第3页
第3页 / 共38页
基于VC++的推箱子游戏设计与实现.docx_第4页
第4页 / 共38页
基于VC++的推箱子游戏设计与实现.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

基于VC++的推箱子游戏设计与实现.docx

《基于VC++的推箱子游戏设计与实现.docx》由会员分享,可在线阅读,更多相关《基于VC++的推箱子游戏设计与实现.docx(38页珍藏版)》请在冰豆网上搜索。

基于VC++的推箱子游戏设计与实现.docx

基于VC++的推箱子游戏设计与实现

本科毕业设计(论文)

基于VC++的推箱子游戏设计与实现

 

学院自动化学院

专业电子信息科学与技术

年级班别2008级

(2)班

学号3108001166

学生吕文财

指导教师________学习_____

 

2012年6月

 

基于VC++的推箱子游戏的设计与实现吕文财自动化学院

 

摘要

近年来随着科技的飞速发展,VisualC++语言的应用正在不断深入。

VisualC++语言是当今国际上非常流行的计算机高级编程语言之一,它是面向对象的可视化集成编程系统。

它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。

它更以自动编译功能和高级除错功能著称。

因此,广泛受到编程人员青睐。

不仅适合作为系统描述语言,也用来编写系统软件,还可以用来编写应用软件和设计游戏等。

本论文着重分析用MicrosoftVisualC++语言实现一个较为简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍MicrosoftVisualC++6.0图形编程的方法和技巧。

本设计通过主界面对话框类、关口选择对话框类、帮助对话框类三大类以及键盘操作模块、游戏规则模块、地图文件读取模块、背景音乐播放模块、地图绘制模块,共五大模块构成。

实现了任意关数选择、难度依次加大、游戏步数记录、背景音乐播放、游戏帮助、胜负判断等多个功能,采用图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。

关键词:

推箱子,c++语言,模块,图形编程

 

Abstract

Inrecentyears,withtherapiddevelopmentofscienceandtechnology,VisualC++languageapplicationarecontinuouslyindepth.VisualC++languageisverypopularonthecurrentinternationaladvancedprogramminglanguagesofthecomputer,itisanobject-orientedprogrammingsystemintegrationofvisualization.Itnotonlyhastheprogramframeautomaticallygenerate,flexibleconvenientclassmanagement,codingandinterfacedesignintegration,candevelopavarietyofinteractiveoperationproceduresandotheradvantages,andthroughthesimpleSettingswillbeabletomakeitsgeneratedprogrammingframeworksupportdatabaseinterface,OLE2,WinSocknetwork,3Dcontrolinterface.Itmoreforautomaticcompilerfunctionandseniordebuggingisfamousforitsfunction.Therefore,widelyfavoredbyprogrammingstaff.Notonlyforthesystemdescriptionlanguage,whichisalsousedtowritethesystemsoftware,canalsobeusedtowriteapplicationsoftwareandgamedesign,etc.

ThispaperfocusesonanalyzingwithMicrosoftVisualC++languagerealizearelativelysimplepushedboxgame,istointroducetherealizationmethodofgamepushedbox,andgraduallyintroduceMicrosoftVisualC++6.0graphicsprogrammingmethodsandtechniques.Thisdesignthroughthemaininterfacedialogboxclass,passoptionsdialogboxclass,helpdialogboxclassthreecategoriesandkeyboardmodule,therulesofthegamemodule,mapreadingmodules,backgroundmusicfilesplaymodule,mapmodule,atotaloffivemodule.Realizetherandomnumber,thedifficultyinturnoffchoice,themoresteps,backgroundmusicrecordgameplay,thegamewonmorethanjudgementtohelp,thefunction,theuseofgraphicsfunctionsachievedacompletepushedboxgameinterface,interfacecanbeclearlyseen.

Keyword:

boxman,C++language,modules,graphicsprogramming

1绪论1

1.1课题研究的意义1

1.2国外研究动态2

1.2.1推箱子游戏的研究动态2

1.2.2国外研究现状及分析3

2课题研究相关技术与分析6

2.1MicrosoftVisualC++6.0概述6

2.2可行性研究与需求分析7

3推箱子游戏的总体设计9

3.1推箱子游戏概述9

3.2推箱子游戏的基本要求9

3.1.1开发软件及硬件环境要求9

3.1.2运行环境9

3.1.4测试环境操作系统与硬件配置9

3.1.4界面要求9

3.3推箱子游戏具有的功能10

3.3推箱子游戏系统设计11

3.3.1推箱子游戏功能架构11

3.3.2程序结构设计11

3.3.3出错处理设计12

3.3.4维护设计13

3.4游戏界面设计13

3.4.1游戏主界面的设计13

3.4.2游戏菜单结构的设计13

3.4.3游戏中关口选择对话框的设计14

4推箱子游戏的设计与实现15

4.1推箱子游戏的界面实现15

4.1.1游戏菜单的实现15

4.1.2游戏帮助对话框的实现16

4.1.3游戏关口选择对话框的实现17

4.1.4游戏播放背景音乐的实现19

4.2推箱子游戏的核心算法设计与实现19

4.2.1地图文件读取模块的设计与实现19

4.2.2地图绘制模块的设计与实现20

4.2.3键盘操作模块的设计与实现22

4.2.4游戏规则模块的设计与实现23

4.2.5主对话框的设计与实现24

5推箱子游戏的整合测试25

5.1主菜单和界面显示功能的测试演示25

5.2键盘操作功能的测试演示25

5.3箱子放置到指定位置时变色显示功能的测试演示26

5.4支持地图扩展功能的测试演示27

5.5游戏胜负判断功能的测试演示28

5.6游戏帮助功能的测试演示29

总结31

参考文献32

致33

 

1绪论

1.1课题研究的意义

目前,在中国乃至世界,游戏产业已经逐渐成为微控制器领域的一个相当庞大以及重要的分支,而关于这方面的高级人才却仍甚是缺乏。

尽管中国的程序员多如牛毛,但依然无法填补我们日常生活中的游戏需要,普遍质量也无法达标。

迄今国游戏公司已经达200多家,市场上运营的游戏也达到300款之多,但与欧美、国等国家的游戏发展程度还有不小差距。

我国有广阔的游戏市场,宽阔的发展空间,无限的继续挑战和剧增的玩家队伍。

随着网络的兴起,巨大的市场需求量使中国在短短几年,已经从无到有,从陌生到熟知,从掌握到运用。

游戏必将成为网络竞争中的主角,它的商业利益和商业价值无法估量。

中国,人口众多的国家,随着人们生活水平的提高,温饱早就不是最终目的,我们寻求的是更加多姿多彩的生活,那么我们怎么能错过游戏这一最佳休闲娱乐项目呢?

所以我国游戏发展前景一片大好[1]!

小游戏是一个较模糊的概念,它是相对于体积庞大的单机游戏及网络游戏而言的,泛指所有体积较小、玩法简单的游戏,通常这类游戏以休闲益智类为主,有单机版有网页版,在网页上嵌入的多为FLASH格式。

当下小游戏主要是指在线玩的flash版本游戏,统称小游戏,其实小游戏还包含单机游戏,小型游戏机等。

一般游戏大小小于10m的游戏都统称为小游戏,一些街机类小游戏。

如植物大战僵尸,捕鱼达人,合金弹头等归纳其中,因其游戏安装简便,耐玩性强,无依赖性而广受白领及小朋友的喜爱。

小游戏的发展时间不长,而且也一直未收到广泛关注,当时中国大陆比较知名的小游戏,像4399,7k7k和2144,基本以收集大量的小游戏并摆列在上为卖点。

到2012年,这些收集的小游戏多达2万到8万款。

4399小游戏是这类的代表,号称为中国最大的Flash游戏集中,在2012年提供了8万余款Flash游戏,并将游戏分类为:

动作、体育、益智、射击、搞笑、冒险、棋牌、策略、敏捷、综合、休闲、装扮、儿童和测试游戏[2]。

由2007年底开始,网页游戏的市场日趋火爆,小游戏作为网页游戏的一个重要组成部分也受到了广泛的关注。

另外像Facebook,Myspace及国的校网、开心网等等一大批SNS社交的迅速崛起,集成小游戏几乎成为了这些SNS留住用户的不二法则。

而体积较小,休闲和娱乐性很强的小游戏,尤其是Flash小游戏就成了SNS最热门的选择。

目前小游戏行业发展面临巨大挑战。

首先是小游戏多如牛毛,竞争非常激烈;其次,小游戏行业已经不像以前那样风光,利润率相对以前低了很多,不再属于暴利行业,而且小游戏的推广成本越来越高,用户对的要求也逐渐加大;最后是潜在的政策风险已经出现,例如网络文化运营许可证在小游戏的出现。

经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。

在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。

推箱子游戏是非常经典的游戏,类似的游戏你也一定早就玩过。

比如当今流行的《切绳子》、《愤怒的小鸟》等游戏,能在生活中给我们带来莫大的快乐,提升我们的大脑运算能力,开发我们的智慧。

不仅在PC机上,在手机和很多PSP上都是十分常见而且流行。

可以说,这种智力型游戏,给这个社会制造了许多快乐,对儿童、少年的成长起到非常重大的作用。

记得几年前,《推箱子》在PC机上刮起了一股不小的益智类游戏的旋风,现在许多资深玩家也都对《推箱子》赞不绝口,可见有深度的益智类游戏是非常受大家欢迎的。

 推箱子游戏1981年由日本人今林宏行首创,是在1982年12月由ThinkingRabbit公司首次发行,名“仓库番”。

箱子只可以推,不可以拉,而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。

推箱子游戏是一种老少皆宜的益智游戏,既可以开发青少年学生的智力,又可以防止老年痴呆症,全家一起攻关还可以促进家庭和睦。

1.2国外研究动态

1.2.1推箱子游戏的研究动态

这款经典的手机游戏,现在电脑软件版,网页版,手机安卓、塞班版,3D版本都早就问世。

最出名的当属唐图科技的《宇宙推箱子》。

以推出高品质Symbian游戏闻名的唐图科技,这次是将经典的《推箱子》游戏搬上了手机。

在这款已经被多次翻新的经典益智游戏中,唐图科技的开发人员仍然没有让我们失望。

独特的创意,精美的画面,丰富的效果,以及方便的操作,处处体现出唐图科技对于玩家的了解和独到的设计。

这款基于X-Factory游戏引擎开发的《推箱子》游戏,首先将玩家熟悉的主角换成了一艘宇宙飞船,游戏的场景也相应地移到了浩瀚的宇宙空间中,而被推动的箱子则变成了不断闪烁的能量块。

游戏场景层次非常丰富,令人眼前一亮,可以说是一个完全不一样的推箱子游戏。

玩家操纵的飞船,在移动时会从尾部喷出动态的火焰,飞船的飞行动作平滑流畅,操作非常爽快。

当能量块被推到正确的位置时,会不断地发出绿光,提示已经完成一部分。

这些丰富的效果,都依赖于X-Factory的强大功能和唐图科技开发人员的精彩创意。

3D推箱子黄金版MagicSokobanGold是一个古典的解谜益育游戏。

五彩缤纷的图像和3D立体构图使箱子真实可见。

游戏很容易操纵,用一只鼠标即可,游戏超过1000个水平。

Flash小游戏《小狐狸推箱子》《松鼠推箱子》《吉豆推箱子》《机器人推箱子》等一系列新版游戏,甚至可以利用道具,更是将这款最经典的推箱子发挥到极致。

从1982年的“仓库番”到现在各种版本、各种平台的推箱子系列游戏,这款经典的智力型游戏长盛不衰,可见其在智力开发上给人类教育发挥了不小的推动作用。

1.2.2国外研究现状及分析

C++这个词在中国大陆的程序员圈子常被读做“C加加”,而西方的程序员通常读做“Cplusplus”,“CPP”。

C++是一种使用非常广泛的电脑程式设计语言。

它是一种静态资料类型检查的,支援多型的通用程式设计语言。

C++支援程序化程式设计、资料抽象化、面向对象程式设计、泛型程式设计、基于原则设计等多种程式设计风格[3]。

Stroustrup工作起于1979年的CwithClasses。

这个构思起源于Stroustrup做博士论文时的一些程式撰写经验。

他发现Simula具备很利于大型软件开发的特点,但Simula的执行速度太慢,无法对现实需求发挥功效;BCPL虽快得多,但它过于低阶的特性,使其不适于大型软件的开发。

当Stroustrup开始在贝尔实验室工作时,他有分析UNIX核心关于分散式计算的问题。

回想起他的博士论文经验,Stroustrup开始为C语言增强一些类似Simula的特点。

之所以选择C,是因为它适于各种用途、快速和可移植性。

除了C和Simula之外,同时也从其它语言中取得灵感,如ALGOL68、Ada、CLU以及ML。

刚开始时,类别、衍生类别、储存类型检查、联和默认参数特性,都是透过Cfront引入C语言之中。

1985年10月出现了第一个商业化发布。

1983年,CwithClasses改命名为C++。

加入了新的特性,其中包括虚函数、函式名和运算符重载、参考、常数、使用者可控制的自由空间储存区控制、改良的型别检查,以及新的双斜线(//)单行注解风格。

1985年,发布第一版《C++程式设计语言》,提供一个重点的语言参考,至此还不是官方标准。

1989年,发布了Release2.0。

引入了多重继承、抽象类别、静态成员函式、常数成员函式,以及成员保护。

1990年,出版了TheAnnotatedC++ReferenceManual。

这本书后来成为标准化的基础。

稍后还引入了模板、异常处理、命名空间、新的强制类型转换,以及布尔。

随着C++语言的演变,也逐渐演化出相应的标准程式库。

最先加进C++标准函式库的是串流I/O程式库,其用以取代传统的C函式,如printf和scanf。

随后所引入的程式库中最重要的便是标准模板库,简称STL[4]。

多年后,一个联合的ANSI-ISO委员会于1998年对C++标准化(ISO/IEC14882:

1998)。

在官方释出1998标准的若干年后,委员会处理缺陷报告,并于2003年发布一个C++标准的修正版本。

2005年,一份名为LibraryTechnicalReport1(简称TR1)的技术报告释出。

虽然还不是官方标准的一部分,不过它所提供的几个扩展可望成为下一版C++标准的一部分。

几乎所有目前仍在维护的C++编译器皆已支援TR1。

随后,C++不断增加新特性。

虚函数(virtualfunction)、操作符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、异常处理(exception)、RTTI(Runtimetypeinformation)、命名空间(namespace)逐渐纳入标准。

1998年国际标准组织(ISO)颁布了C++程式设计语言的国际标准ISO/IEC14882-1998。

另外,就目前学习C++而言,可以认为它是一门独立的语言;它并不依赖C语言,我们可以完全不学C语言,而直接学习C++。

所以有部分人认为在大多数场合中,C++完全可以取代C语言[5]。

C++语言发展大概可以分为三个阶段:

第一阶段从80年代到1995年。

这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借著接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程式库的出现,泛型程式设计在C++中占据了越来越多的比重性;第三阶段从2000年至今,由于以Loki、MPL等程式库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程式设计语言中最复杂的一员。

目前最新的C++标准是2011年9月发布的ISO/IEC14882:

2011[1],又称C++0x或C++11。

现在的最新版C++编译器集合在MicrosoftVisualStudio2010软件里面,包含C++,Visualbasic,C#,J#,.net。

等,其中,VC开发环境的版本已经升级至MicrosoftVisualC++2010,对C++的支持更加全面稳定,建议电脑性能好的可以使用此版本。

目前微软公司已经停止对VC++6.0系列产品的维护,继而转向.NET平台环境,新的MS2008、MS2010等将更符合新世纪通用开发需求[6]。

根据EffectiveC++第三版第一条款的描述,现在C++由以下四个“子语言”组成:

1、C子语言。

C++支持C语言的几乎全部功能,主要是c89的部分,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。

2、面向对象的C++语言。

C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本。

3、泛型编程语言。

C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。

 4、STL(C++标准模板库,StandardTemplateLibrary)。

随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规性使它大受欢迎[7]。

此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。

在Windows版本系列中,下列特点是始终保持并不断发展的;

•图形化的窗口界面。

•多任务方式的运行环境。

•虚拟化的设备接口。

•以虚拟存为核心的存管理。

•网络功能及应用程序,包括Miscrosoft网络、通用基础网络协议等。

•多媒体功能及应用程序,包括图形、声音、动画和开发工具等。

•功能丰富的用户管理工具和实用软件[8]。

 

2课题研究相关技术与分析

2.1MicrosoftVisualC++6.0概述

VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC++不是门语言,虽然它和C++之间有密切的关系,如果形象点比喻的话,可以C++看作为一种“工业标准”,而VC++则是某种操作系统平台下的“厂商标准”,而“厂商标准”是在遵循“工业标准”的前提下扩展而来的。

VC++应用程序的开发主要有两种模式,一种是WINAPI方式,另一种则是MFC方式,传统的WINAPI开发方式比较繁琐,而MFC则是对WINAPI再次封装,所以MFC相对于WINAPI开发更具备效率优势[9]。

VisualC++6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。

VisualC++是一个功能强大的可视化软件开发工具。

自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。

虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用有很大的局限性,只适用于Windows2000、WindowsXP和WindowsNT4.0。

所以实际中,更多的是以VisualC++6.0为平台[3]。

VisualC++6.0由Microsoft开发,它不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。

VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。

这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。

Microsoft的主力软件产品。

VisualC++是一个功能强大的可视化软件开发工具。

自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。

虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。

所以实际中,更多的是以VisualC++6.0为平台[10]。

VisualC++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。

这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

由于C++是由C语言发展起来的,也支持C语言的编译。

6.0版本是使用最多的版本,很经典。

最大的缺点是对于模版的支持比较差。

现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态。

仅支持Windows操作系统。

目前发

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1