坦克大战,与源代码.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文档。上传文档
查看更多
坦克大战,与源代码

采用双向循环链表作太极形式旋转的图案,图案的变化采用刷新屏幕的方法做到。首先,建立一个二维字符数组,保存图形数据,然后通过更改该二维字符数组和清屏,再显示,做到图像的变化。用它提示坦克大战游戏的操作方法。 再显示问题解决后,通过无回显读取函数getch();和输入流检查函数kbhit();读取输入的方向键或回车键进入下一页面。 用同样的方法,读取方向键和回车键,更改内部图案方法,使用户选择关: 第一关:仅有4个坦克同时作战,总数为30个! 第二关:仅有5个坦克同时作战,总数为40个! 第三关: 有6个坦克同时作战,总数为50个! 第四关: 有7个坦克同时作战,总数为60个! 第五关: 有8个坦克同时作战,总数为70个! 选择关卡后,进入下一页面: 进行相关提示。最后进入游戏界面。 也可以通过按左方向键返回上一级重新选择!!! 第一关到第三关:都是宽80,高42的。 最后两关:都是宽160,高42的。 右击标题栏选择属性,进入设置。 接着就是进入最重要的坦克大战游戏了:这时采用的就不是刷新屏幕能解决的问题了。 由于界面太大,不能刷新屏幕,仅能用光标移动函数来更改图像。光标移动函数为gotoxy(int ,int );读者自己查看定义。采用同样输入流读取方法。 接着是游戏规则,操作者用W.w.A.a.S.s.D.d移动坦克,空格是停下。用方向键改变炮筒的方向,回车键是开火。但当自己的炮弹还在运行时,不得开火!!! 用链表保存每一辆坦克(包括主坦克)的数据。电脑控制的坦克,被控制者的坦克炮弹击中,就会发生爆炸,并死亡。当界面上的所有坦克小于特定值时,如果内部还有未出现的坦克,就会在上方的随机位置,产生新坦克。如果操作者的坦克被击中,它的HP(我称为生命值)就会减一点。刚开始游戏时的HP=5; 但升级进入下一关时保留上一局的最后分数和HP。不会重置。 但游戏中有补血包,可以补充生命值(HP)补血包每90秒出现一次,出现的时间长为60秒。如果在这期间操作者的坦克运动到它的位置,补血包将给操作者的坦克补血。补血包不会给其它坦克补血,仅会给操作者的坦克补血。补血包会闪烁,提示它的出现。 界面还提供了每局的游戏时间。和剩敌数,及一些操作命令。当游戏结束或胜利要进入下一关时,界面还会运行5秒钟。 B.b.的暂停是用getch();读取做到的。 退出是直接将循环条件重置为0; 重载视图会在视图为80×42的视图中显示边界,或消失边界。操作者可以自己调整。 为了更好的游戏,让操作者的坦克跑得比其它坦克块。 当电脑控制的坦克在正前方发现操作者的坦克就准备并等待着开火。开火完就跑。 游戏的目的是反映的挑战。 当游戏结束或退出时会回到关卡的选择界面,在那里选择退出,就会有留恋的告别对话,此时仍然可以返回上一级,继续游戏。 通过设置颜色改变字体和背景颜色,使界面更好看: 以下是总结: 在这个有点大的游戏中最大的难题,不是显示问题,也不是同时控制多个对象的问题。 最难的有两个:一、坦克的智能化处理。二、修复同时控制最多有23个对象时共用数据时产生的bug。 如,当坦克被击中,就应该扫描是谁被击中,否则不可能知道是谁。可是扫描到链表的最后一个节点时,直接往下就将指针重置为NULL了,可是返回主函数我还在求那个指针所指向的链表节点的数据。直接接bug,并且把所有的函数分开测或,重新检查,再100年也检查不出问题的所在。这就是最大的痛苦,前一次尝试,就是吃了这个苦头,前一天晚上检差到第二天的晚上都检查不出来。心理陷入极度的痛苦,最终放弃。这就是最大的教训之一!!! 又比如:前一次尝试中,采用同一种方法控制所有内部的坦克,结果所有的坦克,聚成一团,怎么也拆不开。用统一的“引力”和“排斥力”都不管用。写了一个又一个方案都只能宣告失败。自信受到了极大的打击,十分痛苦。 经过演示版本(操作者的坦克阵亡后,不自动退出)的测试: 在长达13小时多的运行中没有任何bug的出现。 这是一张代表图: 图案不同于其它的是操作者控制的坦克。有一辆坦克将炮筒指向了它。它却先跑了一段。圆球都是敌方坦克的炮弹。它身陷危险之中。因为这些坦克是猛兽而并不像表面那么温和。 它的右上方有一个补血包正在闪烁。下方有很多重要的提示信息。 #includeiostream #includeconio.h #includestdlib.h #includewindows.h #includetime.h using std::cin;using std::cout; const int S_X=80; const int S_Y=40; int welcome(void); void start_restart_end(int cammand); void message(

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档