基于VC的飞行模拟游戏的设计及实现
摘 要
电子游戏的出现代表了一种全新娱乐方式的诞生。目前,电子游戏正以其独特的魅力吸引着众多的玩家。随着游戏产业的蓬勃发展,越来越多的人加入到了游戏开发的行业。游戏开发涵盖了程序设计、文学、历史、音乐及美术等诸多方面的内容,除去市场价值的意义,电子游戏的发展的必要性还在于对我国文化产业的发展的重要性,游戏作为一种特殊的创意文化产品形态,是文化产业链中不可缺少的一环。设计在利用已有的开发包和已有的游戏框架的基础上,采用Microsoft Visual C++2005为开发平台,这些开发包和框架已经完美地解决了游戏图像和音效方面的问题,设计的主要工作就是向框架中添加自己所设计的类,用于实现设计所要实现的功能。在进行类的设计时,运用C++所具有的继承和派生功能,使很大一部分代码能够得到重用,从而实现多态,同时,还要在父类中很好地引入虚函数,为指针能够指向子类的同名成员提供方便,然后利用开发包里的方法来实现游戏背景的显示,最终得到一个在Microsoft Visual C++2005上运行的飞行模拟游戏,同时在运行时不会出现重大尤其是会令游戏崩溃的BUG。http://www.16sheji8.cn/
关键词:飞行模拟;多态;代码重用
Design and realization of a flight simulation game based on VC
Abstract
The appearance of computer game has represented the naissance of a totally new sort way of entertainment. At present, the computer game has attracted a great deal of players by its unique charm. Along with the game industry flourishing, more and more people has joined the profession of game development. Game development has covered many contents including programming, literature, history, music, arts ,etc. Eliminate the significance of market value, game develop is quite important to the culture evolution of our nation to be a special kind of creativity culture production. Game is indispensable to the chain of culture industry. The design based on the develop package and the game frame which already exist uses Microsoft Visual C++2005 to be the platform. These develop package and game frame has raveled out the problem which relate to image and sound effect perfectly. The main task of the design is to add classes that planed by oneself to the game frame, to actualize the function which the design have to realize. When we carry through the classes design, use the inherit and derive function, we need to enable a majority of code can be reused, aim to actualize polymorphism, at the same time. It is necessary to use virtual function in the baseclass, to make pointer can point to the member which has the same name in the subclass more convenience, afterwards, utilize the develop package to realize the demonstration of game background, finally obtain a flight simulation game which can run on Microsoft Visual C++2005, and there’s no seriously bugs especially that can make the game crash when running.
Key words: flight simulation; polymorphism; code reuse http://www.16sheji8.cn/
目 录
论文总页数:26页
1 引言 1
1.1 课题背景 1
1.2 国内外研究背景 1
1.3 本课题研究的意义 1
1.4 本课题研究的方法 1
2 游戏软件的现状和VC的概况 1
2.1 中国游戏软件的现状 1
2.2 C++简介 2
2.3 MICROSOFT VISUAL C++简介 3
2.4 利用VISUAL C++开发游戏简介 3
3 开发环境介绍 3
3.1 开发环境 3
3.2 关于ALLEGRO 4http://www.16sheji8.cn/
4 游戏程序的开发 4
4.1 游戏的思路和构想 4
4.1.1 游戏想法的产生 4
4.1.2 对游戏设计的初步认识 4
4.1.3 模块成型阶段 4
4.2 程序的类结构 5
4.3 游戏的实现 5
4.3.1 主类Level的实现 5
4.3.2 Object类的实现 11
4.3.3 Plane类的实现 12
4.3.4 Player类的实现 14
4.3.5 Enemy类的实现 15
4.3.6 Bullet类的实现 16
4.3.7 Prize类的实现 17
5 程序设计过程中遇到的一些重要问题 18
5.1 关于碰撞的问题 18
5.2 关于游戏画面的问题 21
5.3 关于玩家控制的问题 23
结 论 24
参考文献 24
致 谢 25
声 明 26
1 引言
1.1 课题背景
现今,游戏软件已经成为盈利最高的软件之一,而且还在向着复杂化、大型化发展,其中,很多由Visual C++作为开发工具的游戏都取得了巨大的成功,比如暴雪公司的《魔兽争霸》系列和《魔兽世界》,这说明Visual C++开发游戏具有一定的优势。所以,在Visual C++平台上设计游戏是极为方便的,这也是优势所在。http://www.16sheji8.cn/
1.2 国内外研究背景
无论是在国内还是国外,游戏编程已经成为了一种时尚,许多程序员都忘我地投入到其中,他们其中有很多人不光是为了盈利,也有很多是纯粹为了兴趣,许多著名的游戏编程员本身就是狂热的游戏玩家,所以,无论是国内还是国外,诞生了很多经典的游戏,其中利用Visual C++作为开发平台的更是不胜枚举,但是由于我国的游戏编程相对于国外起步较晚,所以在很多地方还存在不小的差距,甚至成了很多游戏软件业比较发达的国家的游戏加工厂。
1.3 本课题研究的意义
目前,市面上的游戏可以说是层出不穷,并且随着电脑硬件系统的改良,未来的游戏必将更智能化,更艺术化,更人性化,在高性能的硬件设备支持下,游戏的驱动引擎更具威力,控制功能更加完备,给人们带来更丰富的娱乐和体验,好的游戏给人们的生活带来了健康愉快的补充,唯美的艺术享受,潜默的教育功效,时尚的情感陶冶,如果没有足够的优质游戏,那么市场就不免会被粗劣的游戏充斥,可以说,对于青少年来说,谁对游戏编程有着更深入的理解和掌握,谁就掌握着游戏的导向权。http://www.16sheji8.cn/
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. 巨大的市场需求。 http://www.16sheji8.cn/
相比于其他国家,我国的软件产业特别是游戏产业起步较晚,在很多地方上都不及一些软件大国,但是近年来我国软件业发展迅速,有关统计数据显示,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++是一种支持多种程序设计方法的语言,提供对过程化和基于对象的程序设计方法的支持。适合于不同使用开发方法的编程人员。http://www.16sheji8.cn/