坦克大战实训指南.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
坦克大战实训指南

坦克大战实训指南 游戏规则 按下任意键游戏开始。 通过WSAD 键控制玩家坦克上下左右移动,但不能走出边境。 通过J键控制玩家坦克发射子弹。 玩家坦克有三条生命,每条命有1点HP,每次被敌方坦克的子弹打到扣除1点HP,当HP=0时,如果玩家生命条数0,则玩家在初始位置复活,否则游戏结束。 游戏中的地形包括砖墙、海水、钢板、森林、地板5种。 敌人种类则包括装甲车、轻型坦克、宝物坦克、3种。 当关卡中的敌方坦克被全部消灭完,则进入下一个关卡,如果当前关卡为最后一关,则游戏通关。 在界面外用一个文本显示玩家生命条数,一个文本显示当前关卡,一个文本显示敌方坦克剩余数量。 实验准备 打开FunCode,创建一个新的C++项目。注意:项目名称必须为英文和数字,且不能有空格。 点击“项目”→“导入地图模板”,从对话框中选取名称为TankWar的模板导入。导入成功后,界面如下: 查看模板设置。模板设置中有如下几点,在项目开发时需要用到: 精灵的名称,创建精灵对象时,通过精灵名称把对象和精灵图片绑定在一起。 玩家坦克的链接点,右下图鼠标点击的位置就是玩家飞机的链接点,飞机发散子弹时,位置应该在链接点前方位置。 类的设计 游戏中能直接看到的精灵:玩家坦克、敌方坦克、子弹、地形、当前关卡文本精灵,当前玩家剩余生命条数文本精灵,当前敌方坦克剩余数量文本精灵。其中,当前关卡文本精灵,玩家剩余生命条数文本精灵,当前敌方坦克剩余数量文本精灵只需要显示响应的数值,可以直接使用CTextSprite类。玩家坦克、敌方坦克、子弹、地形创建相应的类。 可以从玩家坦克和敌方坦克抽象出一个坦克类,作为父类。 坦克类,子弹类,地形类继承CSprite类,通过CSprite类的方法操作精灵。 玩家坦克和敌方坦克被摧毁时,都要播放相应的爆炸动画,这些动画可直接使用CAnimateSprite类。 创建一个游戏类,各个类之间的通信在游戏世界类中进行。该类采用“单例模式”,在程序中只能创建一个对象。本游戏是坦克大战,该类称为坦克游戏类。 创建一个精灵工厂类,用来生成各种精灵类的对象。这就是“工厂模式”。 游戏中还有其他类,详见下面类图: 游戏流程 主流程 游戏分四个状态:未开始、开始、运行和结束。CGameMain类是控制游戏流程的类,游戏屏幕每刷新一次,调用一次该类的GameMainLoop方法。GameMainLoop根据m_iGameState的值分别调用该类的GameInit、GameRun和GameEnd方法。这三个方法对应初始化游戏、游戏运行和游戏结束这三个状态。GameInit只执行一次。执行后修改游戏状态。屏幕刷新后,进入状态2,开始执行GameRun方法。当玩家HP0即玩家坦克不死的时候,GameRun一直被执行。玩家坦克被摧毁后,调用GameEnd执行一次,清除本局游戏数据,恢复游戏未开始状态。 游戏初始化 完成游戏初始工作,界面上的工作:当前关卡初始化为1,创建玩家坦克并放置在指定位置。此外,我们需要创建TankWorld对象,该对象采用单例模式,所以不管游戏运行多少次,TankWorld对象始终只有一个,并且把玩家飞机对象加入到TankWorld对象中。 游戏运行 游戏运行中,每刷新一次屏幕,需要根据必威体育精装版数据,更新玩家生命次数,设置玩家移动方向,删除被摧毁的敌方坦克和子弹,判断是否生产新的电脑坦克。 玩家坦克处理: 在游戏的运行中,玩家通过WSAD键改变了玩家坦克的移动速度及方向,我们在游戏运行中要实时的向FunCode接口更新玩家数据,达到在屏幕上更新玩家状态。 电脑坦克处理: 删除HP=0的电脑坦克,并播放爆炸动画,判断是否出战新的坦克。 文本精灵处理: 在游戏运行时玩家的生命条数以及当前关卡和敌方坦克剩余数量都会实时发生变化,所以文本精灵的数据也需要实时更新显示。 地形及关卡处理 在游戏运行时地形的属性也是会随着坦克子弹的击中而发生变化的,我们需要在此方法内实时更新地图中所有地形的信息,关卡也会发生变化,例如初始化关卡,或者销毁关卡等。 游戏结束 将游戏中剩余的精灵删除,包括删除精灵本身和集合中对应的对象。 重新显示游戏开始的提示图片。 键盘按下事件 本游戏中,游戏状态为1时,按下任意键,游戏状态转为2。游戏状态为2时,玩家按下了WSAD键,分别设置玩家坦克的上下左右速度,当按下的是J键,需要调用玩家坦克的射击方法。 键盘弹起事件 本游戏中,游戏状态为2时,玩家松开WSAD键,相应设置玩家坦克上下左右速度为0。 精灵与精灵的碰撞 本游戏中,坦克均为发送碰撞并且接收碰撞,子弹发送碰撞,地形接收碰撞,宝物接收碰撞。 玩家坦克发送碰撞 玩家发送碰撞时,会撞到地形、电脑坦克、宝物。 玩家炮弹发送碰撞 玩家炮弹发送碰撞会撞到地形 、敌方坦克、敌方炮弹。

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档