实验六战场生存记游戏的实现.doc_第1页
实验六战场生存记游戏的实现.doc_第2页
实验六战场生存记游戏的实现.doc_第3页
实验六战场生存记游戏的实现.doc_第4页
实验六战场生存记游戏的实现.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

闽江学院教案课程名称Flash游戏编程 任课老师: 肖刚上机实验须知实验名称:战场生存记游戏的实现实验目的:在实验四中设计的炮弹、大炮和小兵角色的基础上,利用冲突检测技术,并结合前面学习的知识,设计一个完整的战场生存记游戏。实验环境:1) 高档微机2) Windows操作系统中文版3) Flash CS3 Professional中文版实验原理:冲突检测技术用于检测对象与对象之间或者是对象与点之间是否有覆盖关系。Flash提供了三种冲突检测的方法:名称描述提供者hitTestObject(目标显示对象)检测两个对象是否有重叠的部分DisplayObjecthitTestPoint(x,y,形状标记)检测本对象是否覆盖了某个点DisplayObjecthitTest(参数列表)检测两个BitmapData是否有重叠的部分BitmapData对其具体的介绍,请看本章的教案。“战场生存记”中的冲突检测只有一个,就是检测炮弹与小兵是否有碰到。只要有一个炮打碰到小兵,小兵就应该死去,游戏结束。很显然,这个冲突检测应该设计在炮弹角色里面。因为这里炮弹非常小,我们简化设计,将炮弹当作一个质点,使用点冲突检测来设计,使得检测的边界条件较为接近小兵的身体。实验内容:在角色设计实验的基础上,添加冲突检测技术,并完善整个游戏的逻辑,设计完成“战场生存记”游戏。游戏的描述为:虽然你是一个英雄,但是你在一个空旷的战场上被包围了,四周布满了大炮。你唯一的目标就是生存下来。大炮总是会往你所在的位置开炮,所以你得不停地跑!按方向键进行上下左右跑动。实验步骤:1) 修改炮弹角色将原来的炮弹角色的第一帧代码修改为:stop();var stageWidth = 490, stageHeight = 540;var speedx:Number, speedy:Number;var radio:Number = this.width/2;var enemy:Array;addEventListener(Event.ENTER_FRAME,repeat);function repeat(Event) moveBall();/炮弹的运动var deadHero = checkBomb();/检查是否碰到敌人if (deadHero != null) /碰到敌人了gotoAndPlay(bomb);/自身爆炸deadHero.dead();/指示敌人死去function moveBall() var newx = this.x+speedx;var newy = this.y+speedy;if (newxstageWidth-radio) removeEventListener(Event.ENTER_FRAME,repeat);parent.removeChild(this);return; else this.x = newx;if (newystageHeight-radio) removeEventListener(Event.ENTER_FRAME,repeat);parent.removeChild(this);return; else this.y = newy;function setEnemy(enemyName:MovieClip) /注册敌人if (enemy=null) enemy=new Array();enemy.push(enemyName);function setSpeed(jiaodu:Number,speed:Number=5) /根据初速度和角度确定炮弹的运动speedx = speed*Math.cos(jiaodu);speedy = speed*Math.sin(jiaodu);function checkBomb():MovieClip /检查是否与敌人列表中的一个敌人相碰撞for (var i = 0; ienemy.length; i+) if (enemyi=null) continue;if (enemyi.hitTestPoint(this.x, this.y, true) & enemyi.status != dead) /碰到敌人,并且敌人还没有死return enemyi;return null;这些代码中,我们添加了冲突检测以及相关的部分代码的修改。如黑体部分。2) 设计界面这个游戏的主时间轴只有4帧,完成后的时间轴如下图所示:游戏的时间轴第1帧如下图所示:开始界面这一帧是开始界面,包括游戏说明,“开始”按钮等。“开始”按钮的实例名称为bt_start。第2帧如下图所示:游戏中界面这一帧为游戏初始化画面,四周布满了刚才创建的坦克角色,屏幕左上方有一个显示时间的动态文本框,实例名称为timeCountShow。中间有一个英雄角色,由于英雄的第1帧是空的,所以这里显示为一个空心的小圆。设置英雄的实例名称为hero。第3帧的是游戏中画面,与第2帧完全相同。第4帧是游戏结束画面,如下图所示:其中两个动态文本框实例名称分别为timeCountShow和commentShow,“重玩”按钮的实例名称为bt_restart。3) 组织游戏程序在action图层的每一帧分别输入以下代码:第1帧:stop();var time:Number = 0;var startTime:Date,endTime:Date;bt_start.addEventListener(MouseEvent.MOUSE_DOWN,startGame);function startGame(e:MouseEvent) gotoAndPlay(2);function init() time=0;timeCountShow.text=String(time);startTime=new Date();hero.gotoAndStop(stop);stage.addEventListener(KeyboardEvent.KEY_DOWN,heroRun);/跑动stage.addEventListener(KeyboardEvent.KEY_UP,heroStop);/取消跑动stage.addEventListener(Event.ENTER_FRAME,checkGame);/检查游戏是否结束function heroStop(KeyboardEvent) hero.stand();function heroRun(evt:KeyboardEvent) var direction:Number=0;/英雄跑动的方向。14分别表示东南西北,0表示不动。if (evt.keyCode=Keyboard.LEFT) direction=3;if (evt.keyCode =Keyboard.UP) direction=4;if (evt.keyCode =Keyboard.RIGHT) direction=1;if (evt.keyCode =Keyboard.DOWN) direction=2;hero.run(direction);return;function checkGame(e:Event) showTime();if (hero.status=dead) /英雄已死,游戏结束gotoAndStop(gameOver);function showTime() /更新时间endTime=new Date();time=int(endTime.getTime()-startTime.getTime()/1000);timeCountShow.text=String(time);这一段代码完成初始变量设定以及定义后面要使用到的各个函数。大多数游戏都习惯于在第1帧定义各种函数,以备后面使用。第2帧设置它的帧标签为restart,这里调用初始化函数初始化游戏状态:init();第3帧是游戏中场景,由于都已经初始化完成,而且所有的游戏功能都已经封装在各个角色中了,所以这里只要让播放头停止即可。stop();第4帧输入以下代码:stop();/清除游戏中的各个事件处理函数stage.removeEventListener(KeyboardEvent.KEY_DOWN,heroRun);stage.removeEventListener(KeyboardEvent.KEY_UP,heroStop);stage.removeEventListener(Event.ENTER_FRAME,checkGame);timeCountShow.text=String(time);var comment:String;if (time=40) comment = 继续加油哦!; else if (time=120) comment = 你很棒!; else comment = 你太厉害了!;commentShow.text

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论