实验六 战场生存记游戏的实现.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文档。上传文档
查看更多
PAGE 上机实验须知 实验名称: 战场生存记游戏的实现 实验目的: 在实验四中设计的炮弹、大炮和小兵角色的基础上,利用冲突检测技术,并结合前面学习的知识,设计一个完整的战场生存记游戏。 实验环境: 高档微机 Windows操作系统中文版 FlashCS3Professional中文版 实验原理: 冲突检测技术用于检测对象与对象之间或者是对象与点之间是否有覆盖关系。Flash提供了三种冲突检测的方法: 名称 描述 提供者 hitTestObject(目标显示对象) 检测两个对象是否有重叠的部分 DisplayObject hitTestPoint(x,y[,形状标记]) 检测本对象是否覆盖了某个点 DisplayObject hitTest(参数列表) 检测两个BitmapData是否有重叠的部分 BitmapData 对其具体的介绍,请看本章的教案。 “战场生存记”中的冲突检测只有一个,就是检测炮弹与小兵是否有碰到。只要有一个炮打碰到小兵,小兵就应该死去,游戏结束。 很显然,这个冲突检测应该设计在炮弹角色里面。因为这里炮弹非常小,我们简化设计,将炮弹当作一个质点,使用点冲突检测来设计,使得检测的边界条件较为接近小兵的身体。 实验内容: 在角色设计实验的基础上,添加冲突检测技术,并完善整个游戏的逻辑,设计完成“战场生存记”游戏。游戏的描述为: 虽然你是一个英雄,但是你在一个空旷的战场上被包围了,四周布满了大炮。你唯一的目标就是生存下来。大炮总是会往你所在的位置开炮,所以你得不停地跑!按方向键进行上下左右跑动。 实验步骤: 修改炮弹角色 将原来的炮弹角色的第一帧代码修改为: stop(); varstageWidth=490,stageHeight=540; varspeedx:Number,speedy:Number; varradio:Number=this.width/2; varenemy:Array; addEventListener(Event.ENTER_FRAME,repeat); functionrepeat(Event){ moveBall();//炮弹的运动 vardeadHero=checkBomb();//检查是否碰到敌人 if(deadHero!=null){//碰到敌人了 gotoAndPlay(bomb);//自身爆炸 deadHero.dead();//指示敌人死去 } } functionmoveBall(){ varnewx=this.x+speedx; varnewy=this.y+speedy; if(newxradio||newxstageWidth-radio){ removeEventListener(Event.ENTER_FRAME,repeat); parent.removeChild(this); return; }else{ this.x=newx; } if(newyradio||newystageHeight-radio){ removeEventListener(Event.ENTER_FRAME,repeat); parent.removeChild(this); return; }else{ this.y=newy; } } functionsetEnemy(enemyName:MovieClip){//注册敌人 if(enemy==null){ enemy=newArray(); } enemy.push(enemyName); } functionsetSpeed(jiaodu:Number,speed:Number=5){ //根据初速度和角度确定炮弹的运动 speedx=speed*Math.cos(jiaodu); speedy=speed*Math.sin(jiaodu); } functioncheckBomb():MovieClip{//检查是否与敌人列表中的一个敌人相碰撞 for(vari=0;ienemy.length;i++){ if(enemy[i]==null){ continue; } if(enemy[i].hitTestPoint(this.x,this.y,true)enemy[i].status!=dead){ //碰到敌人,并且敌人还没有死 returnenemy[i]; } } returnnull; } 这些代码中,我们添加了冲突检测以及相关的部分代码的修改。如黑体部分。 设计界面 这个游戏的主时间轴只有4帧,完成后的时间轴如下图所示: 游戏的时间轴 第1帧如下图所示: 开始界面 这一帧是开始界面,

文档评论(0)

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

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

1亿VIP精品文档

相关文档