基于MFC的陨石撞飞机游戏设计与实现

Galaxy

发布日期: 2018-12-04 15:33:12 浏览量: 1561
评分:
star star star star star star star star star_border star_border
*转载请注明来自write-bug.com

摘 要

用MFC设计一个陨石撞飞机的平面游戏,陨石不断下落,飞机通过键盘的上下左右键移动以躲避陨石。当陨石撞到飞机时,显示游戏结束提示对话框。设计开始要对开发环境VC 6.0的熟悉,需要学会如何添加资源,添加类,编写函数控制位图,主要通过网上的学习,不断搜索才弄到大体。要设计飞机有3次被撞的机会,通过一个全局的变量设置飞机的生命值,没被撞一次,飞机的生命值减少1,直到飞机的生命值为0,游戏结束。有了3次机会,使得游戏的乐趣性增加,效果很满意。当游戏继续进行时,陨石下落的速度不断增加,速度的增加通过给陨石下落的速度设定一个函数,函数值经过时间的积累而增加,使得陨石下落的速度越来越快。陨石下落的速度不断增加,这给游戏添加不少挑战性,飞机存活的时间越长,速度越快,游戏的难度越大。

关键字:陨石,飞机,速度。

1 C++游戏分析

中国C++程序员100%都是自学的,因为中国几乎没有象样的C++培训机构。大家都知道社会培训是赚钱为主要目的。能在那里成才是个大运气。也不象JAVA有SUN公司一手推行。中国大学教育里也根本没有C++教学。关于C/C++基础课的知识,只是让学生入门。但对于实际的C++软件工程应用,大学课本知识实践意义不大。最重要的是,大学里没有合格的C++老师。编程是门技术,叫手艺也行。而大学是搞科研的,多的是科学家,靠出PAPER教科凭职称为生。并不是技术员。没有10万行以上代码经验和成功软件项目经验的人,很难教出中高级C++程序员。

游戏制作业对C++程序员的要求是比较高的。比一般行业软件高很多。因为任何一个MMO都是个中大型软件项目。日使用人次达到几十万上百万,同时使用人数几十万在线的大型网络多人交互软件,集成了超过十几项专业领域编程技术的软件,想不大都不行。

另外,中高级C++程序员能力一般都很强。因为都是自学成才,这需要较高智商,很强的自学能力,解决问题能力,和克服困难的毅力。但是这种人才在游戏行业里人数并不多。抛开凤毛麟角具备整体大型软件架构能力的高级人才不谈。能够承担独立模块开发,具备独立解决问题的能力,写出在空间,性能,可维护性等几个方面达到要求的C++程序员,也是很难找到的。而具备这些能力,同时又具备一些专业领域技术的人(图形引擎,网络引擎,等),更加稀少。

所以,即便是大游戏公司,对于C++游戏程序员的需求,也是永远不能够得到满足。而已经在公司工作的C++程序员,不经过短则3个月,长达1年的锻炼,也无法真正胜任独当一面的C++游戏程序开发工作

首先,基本C++知识,C/C++运用技能,必须极其扎实。并不是游戏软件开发用到什么平时书本上很难得到的知识点或者技能点。游戏C++开发的知识体系和技能体系,利用现有C++书籍就可以满足。比如《C++PAORGRAMMING LANGUAGE》《C++ PRIMER》《EFFECTC++》《MORE EFFECT C++》等。但是在开始游戏编程之前,把这些书本吃透并且实践熟练的人,非常难遇到。当然能够真做到这点的人,已经是个中高级C++程序员了。我曾经遇到过一个,毕业工作不久就去了GOOGLE。

其次,对于面向对象的深入理解。是非常重要的。熟练掌握C/C++语法,编程技巧,只是满足了C++游戏程序员一部分要求。而面向对象观念的深刻理解,会为大型C++项目开发带来翻天覆地的变化。 有时候,在一个10人以上并行开发的C++游戏项目中,面向对象方法会成为救命稻草。《设计模式》以及《设计模式解析》相关的书籍,也是必修课。

最后,好技术人员的本质是自大的。这属于正常。但是如果这种习性影响了自身继续提高和团队合作。以及影响了其成为技术管理者和项目技术核心时,那么这种技术人员的自身价值会大打折扣。 如果早日越过自命不凡这一关,扩大眼界,继续在综合素质上提高。在技术管理能力,架构能力上提高,其自身价值才会继续增长。落到实处,就是待遇和身家增长。

由于游戏开发的本质是团队开发。任何时候,只有对一个团队有价值的技术人员,其本身的价值才有可能得以体现。

一个经验丰富的C/C++程序员。有过中国自主研发在线过百万游戏的成功项目经验。目前有网易出钱让其独立领导队伍搞引擎和游戏产品已经快3年。这样的一个履历,经验,本身就价值很高。他在任何公司都可以找到年薪几十万的工作。如果他具备管理才能。哪怕就是项目管理,或者技术管理能力。对于一个上市公司,他能做出的贡献,应该用百万/年量级来衡量。如果他能找到一个商业人士,负责舵手,并且自己具备一定商业能力,独立创业。吸引的天使风险投资也得几千万(否则做不了事,当然)。如果产品能做成,身家到达几千万是很自然的事。

2 陨石撞飞机游戏总体设计

在游戏中玩家可以通过键盘的上下左右移动飞机躲避陨石,陨石从游戏界面的上部分不断下落,陨石的下落速度一开始是慢的,随着游戏的继续而玩家还没停止,陨石下落的速度越来越快,从而增加游戏的难度。在游戏上设置了2个模块,模块1是控制飞机的移动,主要是通过KEYDOWN函数实现,监测键盘的动作而处理相应事件,事件就是移动飞机。模块2是控制陨石的下落速度,通过设置两个计时器,一个计时器是控制陨石实际下落速度,另一个计时器是控制上一个计时器刷新的时间,从而避免一个计时器控制下落速度改变成指数型。陨石的数量可以自己控制,通过添加资源位图,陨石的形状也可以按照自己的爱好画。

3 游戏实现的技术难点与关键算法说明

要熟悉VC6.0的使用才能顺利开发。游戏中实现陨石下落速度的变化,一开始使用一个 计时器控制,使得陨石下落的速度成指数型的速度变化,慢的的时候,速度变化很慢,但快的时候变化很快,最后使得游戏一开始持续的时间长,到后面陨石下落速度很快的时候,游戏一下就结束了。解决这个问题我是通过使用两个计时器实现陨石下落速度 一个计时器是控制陨石实际下落速度,另一个计时器是控制上一个计时器刷新的时间,从而避免一个计时器控制下落速度改变成指数型。

4 运行结果与测试

游戏测试结果良好,陨石和飞机除了颜色外还出现有白色的部分,飞机移动的距离适合,游戏较小,开启很快,CPU基本不占用,内存也只占用4236k。

5 总结与体会

对MFC开发还是不熟悉,需要多加练习,熟悉开发环境VC6.0和其中的各种函数使用。游戏的用户体验还有带提升,挑战性也可以继续添加。MFC好难,要学习比较苦难。

上传的附件 cloud_download 基于MFC的陨石撞飞机游戏设计与实现.7z ( 76.27kb, 20次下载 )
error_outline 下载需要13点积分

发送私信

人生如下棋,必有远见方能获胜

6
文章数
9
评论数
最近文章
eject