飞机游戏.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
飞机游戏.doc

第六章???????????????? 飞机游戏 1.????????? 实现思想 ? 飞机游戏,也是一种常见的小游戏。当然,它们的常见并不像扫雷或俄罗斯方块游戏一样的单一,它们是有许多不同的方案的。它们可以有各自的规则,各自的图像(这是当然的),各自的优点和缺点(这是必然的)。 而我们之所以要做这个游戏,是因为这种游戏还是有很多共同的地方,这种游戏对于我们的学习有帮助,这种游戏对于短时间的娱乐还是不错的。 当然,我们的重点是在于学习。 ? 游戏的角色: ? 飞机游戏,主角当然是飞机。飞机分成两方:玩者的一方(分为单人和双人,由于前面已经实现了俄罗斯方块游戏和老鼠游戏的双人游戏,这里只是实现游戏的单人版,双人版就作为读者的练习)和计算机的一方。我们称为正方和对方。 正方:具有生命力(本游戏设置为5),有火力(本游戏包括三种:单火力、双火力和强火力),生命力每次被炸毁就减一,而当火力值大于5时,生命力和火力强度同增。而火力,开始是0,表示单火力,之后,每次添加一个火力值就加一。 反方:由计算机按时地、随机地产生飞机,按时地发射子弹,按时地移动子弹的位置。(游戏的实现,往往就是因为要实现计算机的这些按时的“智能”的操作。) 火力:之所以把火力作为一个角色,因为它的存在,是独立的;它的作用又是为正方服务的,它的产生也是我们对程序的专门设置而实现的。我们可以忽略它的存在,同时,由于本游戏的特点(其实也是许多游戏的特点),我们由必须依靠它的存在,它可以给我们生命力和火力。 背景:我把背景做为一个角色,确实有一点不大合理,但是,每个人做事都是有他的原因的。我在这里把它提出来,只是为了强调一下它的作用。之前的一下设置,背景都是静态的,我们只是操作程序的前景位图。而现在,(更多的是读者今后)我们将要实现的是动态的背景,我们必须利用背景的移动来映射飞机的前进飞行。(由于屏幕的限制,这种做法是必然的。) ? 游戏的实现: ? 依然是全屏,而且是更彻底的全屏,或许应该说是真正的全屏。 支持多种分辨率,当然,前面一章后面我们已经讲了一种方案,这里介绍的是另外一种。由于位图的限制,我们不可能总是画那么多的位图,我们也不可能利用放大缩小位图的方法,这样会产生严重的闪烁。那么,我们可以利用留空白的方法,我们制造最基本的位图,宽800,然后,利用获取屏幕大小的函数取得屏幕分辨率的大小,然后设法把位图显示在屏幕的中间。 背景位图的显示,由于我们的背景位图大小是有限制的,高度不可以大于2000(具体数字是2000多一点)。但是,我们要的是连续不断地显示背景,我们又不能只是背景位图显示完了,重新从头显示,这样会产生背景不连续的效果,是不允许的,那么,该怎样实现呢? ? 新建工程6_1,单文档。 ? 2.????????? 相关位图 ? 位图,作为游戏编程不可少的东东,我们还是先说明一下。 ? 背景位图:800*600 IDB_BITMAP1 我方飞机:50*50 IDB_BITMAP2 敌方飞机:50*50 IDB_BITMAP3 我方子弹:50*50 IDB_BITMAP4 对方子弹:50*50 IDB_BITMAP6 炸毁飞机:60*60 IDB_BITMAP5 为了更好显示爆炸效果 火力位图:50*50 IDB_BITMAP7 ? ? 3.????????? 变量与函数 ? 上一章,我们为了各个角色的需要,建立了三个类。目的是为了利用类来建立对象。这一章,由于我们只有单人版游戏,而敌机又只是在固定位置,所以我们无须建立那么多的类,只是添加一个类就行了。(当然,如果你想实现双人游戏,或许想改进游戏,实现敌机移动的话,最好还是添加新类的好。) 既然是游戏,我们还是添加类名为:CGame 而由于我们只是添加一个新类,我们就必须把所有的变量和函数都添加到这个类里面。如下: ? //显示信息 void DrawMessage(CDC*pDC,int width,int height); //火力位图是否出现 void FireOutIf(); //子弹移动 void shotmove(); //敌机发射子弹 void Enemyshot(); //敌机出现 void Enemyplaneout(); //我方射击 void Shot(); //设置透明位图 void TransparentBitmap(HDC hdc, HBITMAP hBitmap, short xStart, short yStart, short xadd,short yadd, COLORREF cTransparentColor); //透明色 COLORREF

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档