基于VC的飞行模拟游戏的设计及实现
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1 引言
1.1 课题背景
现今,游戏软件已经成为盈利最高的软件之一,而且还在向着复杂化、大型化发展,其中,很多由Visual C++作为开发工具的游戏都取得了巨大的成功,比如暴雪公司的《魔兽争霸》系列和《魔兽世界》,这说明Visual C++开发游戏具有一定的优势。所以,在Visual C++平台上设计游戏是极为方便的,这也是优势所在。
1.2 国内外研究背景
无论是在国内还是国外,游戏编程已经成为了一种时尚,许多程序员都忘我地投入到其中,他们其中有很多人不光是为了盈利,也有很多是纯粹为了兴趣,许多著名的游戏编程员本身就是狂热的游戏玩家,所以,无论是国内还是国外,诞生了很多经典的游戏,其中利用Visual C++作为开发平台的更是不胜枚举,但是由于我国的游戏编程相对于国外起步较晚,所以在很多地方还存在不小的差距,甚至成了很多游戏软件业比较发达的国家的游戏加工厂。
1.3 本课题研究的意义
目前,市面上的游戏可以说是层出不穷,并且随着电脑硬件系统的改良,未来的游戏必将更智能化,更艺术化,更人性化,在高性能的硬件设备支持下,游戏的驱动引擎更具威力,控制功能更加完备,给人们带来更丰富的娱乐和体验,好的游戏给人们的生活带来了健康愉快的补充,唯美的艺术享受,潜默的教育功效,时尚的情感陶冶,如果没有足够的优质游戏,那么市场就不免会被粗劣的游戏充斥,可以说,对于青少年来说,谁对游戏编程有着更深入的理解和掌握,谁就掌握着游戏的导向权。 【买计算机毕业论文就到www.think58.com】 think58好,好think58
[资料来源:http://THINK58.com]
1.4 本课题研究的方法
采用Microsoft Visual C++2005为开发平台,在利用已有的开发包和已有的游戏框架的基础上,这些开发包和框架已经完美地解决了游戏图像和音效方面的问题,设计的主要工作就是添加自己所设计的类,用于实现本设计所要实现的功能,在进行类的设计时,运用C++所具有的继承和派生功能,使很大一部分代码能够得到重用,同时,还要在父类中很好地引入虚函数,为指针能够子类的同名成员提供方便,最后利用开发包里的方法来实现一个游戏背景的显示。
2 游戏软件的现状和VC的概况
2.1 中国游戏软件的现状
软件产业是当前世界上增长最快的朝阳产业之一,并将成为21世纪推动世界经济发展和社会进步的重要动力。近年来,主要国家软件业平均以11%以上的增长率快速发展。据“oecd2000年信息技术展望”报告,1997年,其增长率成员国仅软件包产值就占世界市场份额的94%,达1080亿美元,并自1990年以来年11.2%。美国是世界上最大的软件生产国,1997年的软件产值为1705.9亿美元,占其当年GDP的2.1%,出口额为155.5亿美元。日本其次,1998年软件产值约570亿美元,但出口仅为0.82亿美元。英国列第三,1999年的软件产值为377.46亿美元,占其GDP的1.2%,出口约16.2亿美元。据对各国软件业发展的轨迹分析,虽然各国的产业规模和出口额相差较大,但其成功的因素可归纳为以下几点:1. 对软件知识产权的严格保护,营造一种谁投资谁受益的良好商业和法治氛围; 2. 服务到位的融资机构,促进软件成果转化快; 3. 高素质的软件专业人才,配合制定灵活的技术移民政策; 4. 具有第一流的大学教育,能够迅速适应市场对人才的需求; 5. 发达的通信设施; 6. 长期磨炼的企业家精神; 7. 巨大的市场需求。 本文来自think58
相比于其他国家,我国的软件产业特别是游戏产业起步较晚,在很多地方上都不及一些软件大国,但是近年来我国软件业发展迅速,有关统计数据显示,2001年,软件产业销售收入仅为796亿元,到了2006年年底已经达到4800亿元,5年增长了6倍多。但与软件产业发达国家相比,差距依然很大,绝大部分市场被国外软件业巨头垄断,国产软件占据的市场份额很少。在国际市场上,2005年国产软件出口额为35.9亿美元,仅占全球软件市场份额的5.9%。
2.2 C++简介
C++语言是在C语言的基础上为支持面向对象的程序设计而研制的通用程序设计语言,它是由AT&T贝尔实验室的Bjarne Stroustrup博士创建。研制C++的首要目标是使C++首先是一个更好的C语言,所以根除了C语言中存在的问题,增加了许多新功能。C++的另一个目标是支持面向对象的程序设计,因此在C++中引入了类的机制。所研制的这个语言最初被称为“带类的C语言”,1983年取名为C++。C++语言的标准化工作从1989年开始,于1994年制定了ANSI C++标准草案。
C++的主要特点有两个方面:全面支持C语言与面向对象。C++从C语言发展而来,保持了C语言的简洁、高效和在某些操作上沿用了汇编语言指令的特点。同时,对C语言的类型进行了系统的改革和扩充,堵塞了C语言中的许多漏洞,C++编译提供了更好的类型检查和编译时的分析,能检查出更多的类型错误。C++改善了C语言的安全性,比C语言更安全。由于C++保持与C语言兼容,这就使许多代码不经修改就可在C++编译器下通过,用C语言编写的众多库函数和实用软件可方便地移植到C++中。因此,使用C语言的程序员能很快学会C++,使用C++进行编程。另外,用C++编写的程序可读性好,代码结构更为合理。C++的最重要的特点是支持面向对象的程序设计,使用C++编程,编程效率高;由于面向对象的方法更接近人类认识世界的方法,C++对于问题更容易描述,程序更容易理解与维护;C++的模板对库代码的重用提供了支持;C++更有利于大型程序设计。C++是一种支持多种程序设计方法的语言,提供对过程化和基于对象的程序设计方法的支持。适合于不同使用开发方法的编程人员。 内容来自think58
2.3 Microsoft Visual C++简介
Visual Studio是微软公司推出的开发环境。是目前最流行的 Windows 平台应用程序开发环境。目前已经开发到 8.0 版本,也就是 Visual Studio 2005。在Visual Studio中就有面向 Windows 开发使用的 Visual C++。
Visual C++自诞生以来,一直是Windows环境下最主要的应用开发系统之一。Visual C++不仅是C++语言的集成开发环境,而且与Win32紧密相连,所以,利用Visual C++开发系统可以完成各种各样的应用程序的开发,从底层软件直到上层直接面向用户的软件。而且,Visual C++强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。
进入21世纪以来,随着多媒体技术和图像技术的不断发展,可视化技术得到广泛的重视,越来越多的计算机专业人员和非专业人员都开始研究并应用可视化技术。所谓可视化技术,一般是指软件开发阶段的可视化和对计算机图形技术和方法的应用。Visual C++是一个很好的可视化编程工具,使用Visual C++环境来开发基于Windows的应用程序大大缩短了开发时间,而且它的界面更友好,便于程序员操作。
2.4 利用Visual C++开发游戏简介
进入上个世纪90年代以来,游戏开发进入了可视化阶段,并且Visual C++是首选的开发工具,在此期间,诞生了许多用Visual C++开发的经典游戏,比如任天堂公司Family Computer主机上的《小蜜蜂》以及大名鼎鼎的《星际争霸》,这些游戏不仅在当时取得了巨大的成功,而且到现在也被奉为经典。可以说在这个时期,Visual C++在游戏开发领域是独领风骚。 内容来自think58
进入了新千年,JAVA语言开始崛起,由于JAVA具有较高的可移植性,许多游戏,特别是很多手机游戏都转向了JAVA平台,但是纵观市面上最火的单机游戏《魔兽争霸3》和最火的网络游戏《魔兽世界》,都清一色的是用Visual C++开发的,这说明就算在新时期的游戏开发中, 利用Visual C++作为开发平台还是具有一定优势的。
3 开发环境介绍
3.1 开发环境
操作系统:Microsoft Windows XP
程序语言:C++
开发平台:Visual C++ 2005
开发工具:Allegro
3.2 关于Allegro
Allegro是一个免费为C和C++的开发人员提供的一个游戏编程库,它支持以下操作系统:DOS, Unix (Linux, FreeBSD, Irix, Solaris, Darwin), Windows, QNX, BeOS 和 MacOS X。它还提供了很多诸如图形,声音,玩家输入(键盘,鼠标和手柄)和定时器的功能。它也提供了浮点运算功能,3D功能,文件管理功能和GUI。当前最新版本为4.3.1,官方网址为http://alleg.sourceforge.net/index.html
4 游戏程序的开发
4.1 游戏的思路和构想
4.1.1 游戏想法的产生
资料显示,在上个世纪风靡一时的任天堂FC主机上,最火爆的飞行游戏便是《小蜜蜂》,这款游戏已其独特的游戏方式征服了亿万玩家,这款游戏的游戏方式虽然极为简单,但是却极为有趣,停留在屏幕上方的蜜蜂不停地向下攻击玩家所控制的飞机,玩家不仅必须要避开蜜蜂的攻击,还要控制飞机还击蜜蜂而玩家击中这些蜜蜂以后,他们死亡后会有一定几率掉落增加玩家生命,玩家子弹速度和玩家得分的奖子,而这款《小蜜蜂》,正是用C++语言开发的,这说明,在Visual C++平台下开发一个类似于《小蜜蜂》的飞行射击游戏是可行的。 think58
4.1.2 对游戏设计的初步认识
整个设计的关键词如下:游戏、飞机、敌机、子弹、关卡、玩家、奖子、屏幕、三发子弹、双发子弹、改变玩家子弹类型变化的奖子、增加玩家生命的奖子、爆炸,这些关键字都需要定义一个独立的类来描述它们,并且,可以把飞机类设定为敌机类和玩家类的父类,因为飞机类中的一些方法也可以用于敌机类和玩家类,同理,也应该把奖子类设定为改变玩家子弹类型变化的奖子类和增加玩家生命的奖子类的父类,至于子弹,则不必用到继承和派生,因为无论是三发子弹还是双发子弹,他们的属性和功能都是一样的,差别只是存在于视图上。 [资料来源:http://think58.com]
4.1.3 模块成型阶段
进一步熟悉了编程知识后,对框架做出了一些修改,逐步把游戏的基本功能确定。
1.Level类主要实现负责管理游戏中的所有物体,包括管理显示,碰撞,创建和回收等,还提供了一些服务,方便查询关卡中的一些物体的信息。
2.Object类主要负责控制可见性,坐标位置,设置速度等,其中就主要的一个功能就是判断物体是否越界。
3.Plane类主要就是实现设定飞机的爆炸类型,子弹类型,实现开火以及设定开火冷却时间,而其子类Enemy类则进一步实现了设定敌机的生命值和掉落的奖子类型。另一个子类Player类增加了实现玩家在被击毁后诞生时的无敌时间。
4.Bullet类主要实现了子弹的创造。
5.Explosion类主要实现了爆炸的创造。
6.Prize类主要实现玩家“吃”掉奖子后改变玩家属性。
think58.com [资料来源:www.THINK58.com]