- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计报告--坦克大战
目录一. 问题定义11. 项目名称12. 项目目标13. 选题背景1二. 可行性研究11.技术可行性12. 经济可行性13. 操作可行性1三. 需求分析21. 游戏内容需求22. 游戏规则3四. 游戏设计31. 类的设计32. 游戏流程41. 主流程42. 游戏初始化53. 游戏运行63. 游戏序列图14游戏初始化14键盘按下事件15游戏运行15玩家坦克处理16电脑坦克处理17炮弹碰撞处理19坦克碰撞处理19游戏结束20五. 游戏代码21CGameMain类21CTankPlayer类32CTankEnemy类36CBullet类42CWeapon类49六. 实验总结53问题定义项目名称坦克大战项目目标综合运用C++及其面向对象的知识开发一款小游戏。选题背景 相信大部分同学都玩过或看过“坦克大战”这款经典游戏。现在,就由我自己动手来开发它。因为之前的学习,我具备了C++语言和面向对象的基础知识,在这个基础上按照实验指南的指导一步一步进行下去,把这款经典游戏做出来。巩固之前所学知识也学习新的知识。可行性研究1.技术可行性本游戏采用 FunCode和Visual C++6.0进行开发,基于Windows xp和Windows7操作系统。Funcode软件提供了大量基础类库,可以快速方便地构造出游戏软件。之前课程学习过C++,具有一定的C++语言开发基础,对面向程序设计有一定了解。经济可行性此次课程设计由我一人完成,只需装有Funcode及Visual C++的电脑一台,无资金需求;且制作出来的游戏软件并不打算发行,也无后期资金需求,经济完全可行。操作可行性本游戏只需用W、A、S、D来移动,用J键进行攻击,操作十分简单,界面友好,符合用户操作习惯。需求分析游戏内容需求在一个战场上,玩家控制坦克,消灭敌方坦克,并防止敌方坦克摧毁我方基地。游戏的具体要求如下:游戏有一个初始页面,如下图。按下任意键开始游戏,玩家控制坦克在战场上穿梭,碰到墙时,不能通过。敌方坦克自由移动,每隔2秒改变一个方向,每隔3秒发射一发子弹。敌方坦克每隔5秒出现一辆,从屏幕上方的左、中、右三个位置依次出现。当玩家被消灭或者我方基地被摧毁或者游戏时间大于30秒的时候,游戏结束。图1 游戏开始前图2 进入游戏游戏规则按下任意键游戏开始。通过WSAD 键控制玩家坦克上下左右移动,但不能走出边境。通过J键控制玩家坦克发射子弹。玩家坦克有三条生命,每条命有1点HP,每次被敌方坦克的子弹打到扣除1点HP,当HP=0时,如果玩家生命条数0,则玩家在初始位置复活,否则游戏结束。游戏中的地形包括砖墙、海水、钢板、森林、地板5种。敌人种类则包括装甲车、轻型坦克、宝物坦克、3种。当关卡中的敌方坦克被全部消灭完,则进入下一个关卡,如果当前关卡为最后一关,则游戏通关。在界面外用一个文本显示玩家生命条数,一个文本显示当前关卡,一个文本显示敌方坦克剩余数量。游戏设计类的设计 游戏中能直接看到的精灵:玩家坦克、敌方坦克、子弹、地形、当前关卡文本精灵,当前玩家剩余生命条数文本精灵,当前敌方坦克剩余数量文本精灵。其中,当前关卡文本精灵,玩家剩余生命条数文本精灵,当前敌方坦克剩余数量文本精灵只需要显示响应的数值,可以直接使用CTextSprite类。玩家坦克、敌方坦克、子弹、地形创建相应的类。 可以从玩家坦克和敌方坦克抽象出一个坦克类,作为父类。 坦克类,子弹类,地形类继承CSprite类,通过CSprite类的方法操作精灵。 玩家坦克和敌方坦克被摧毁时,都要播放相应的爆炸动画,这些动画可直接使用CAnimateSprite类。 创建一个游戏类,各个类之间的通信在游戏世界类中进行。该类采用“单例模式”,在程序中只能创建一个对象。本游戏是坦克大战,该类称为坦克游戏类。创建一个精灵工厂类,用来生成各种精灵类的对象。这就是“工厂模式”。游戏中还有其他类,详见下面类图:图3 类图游戏流程主流程 游戏分四个状态:未开始、开始、运行和结束。CGameMain类是控制游戏流程的类,游戏屏幕每刷新一次,调用一次该类的GameMainLoop方。GameMainLoop根据m_iGameState的值分别调用该类的GameInit、GameRun和GameEnd方法。这三个方法对应初始化游戏、游戏运行和游戏结束这三个状态。GameInit只执行一次。执行后修改游戏状态。屏幕刷新后,进入状态2,开始执行GameRun方法。当玩家HP0即玩家坦克不死的时候,GameRun一直被执行。玩家坦克被摧毁后,调用GameEnd执行一次,清除本局游戏数据,恢复游戏未开始状态。主流程图如下:图4 主流程图游戏初始化 完成游戏初始工作,界面上的工作:当前关卡初始化为1,创建玩家坦克并放置在指定位置。此外,我们需要创建TankWorld对象
您可能关注的文档
最近下载
- 2025年中国铁路武汉局集团有限公司招聘毕业生(四)【135人】笔试参考题库附带答案详解.docx
- 最新高二语文下学期期末试卷附答案一套.docx VIP
- 外研版高中《英语》(新标准)必修二Unit6 单元整体教学设计附作业设计.docx
- 毛概电子书.doc
- 紫外线钣金灰行业报告.pptx
- 外研版高中《英语》(新标准)必修二Unit5 单元整体教学设计附作业设计.doc
- CQC13464225-2024电力储能用锂离子电池安全与性能认证规则.pdf
- 外研版高中《英语》(新标准)必修二Unit1 单元整体教学设计附作业设计.doc
- 洪洞悦昌煤业副斜井施工组织设计方案.docx
- (四调)武汉市2025届高中毕业生四月调研考试 数学试卷(含答案详解).pdf
文档评论(0)