var sl=3; //蛇起始节
var wallnum=20; //障碍数 var sp=10; var fx=sp; var fy=0; var en=0; var go=false; //蛇是否还能走的标志 var turn=0; var gameover=false; //游戏结束,重新初始化标志 //================================画方块函数 drawbox=function(obj,w,h,mycolor){ with(obj){ lineStyle(1,0,100); beginFill(mycolor,100); moveTo(0,0); lineTo(w,0); lineTo(w,h); lineTo(0,h); lineTo(0,0); endFill(); } } //=================================画圆函数 drawcircle=function(obj,r,mycolor){ var rr,radius; with(obj){ lineStyle(0,0,0); beginFill(mycolor,100); moveTo(2*r,r); for(rr=1;rr<=36;rr++){ radius=rr*10*Math.PI/180; lineTo(r*Math.cos(radius)+r, r*Math.sin(radius)+r); }; endFill(); } } //=============================================================生成背景mc _root.createEmptyMovieClip("bg",1); drawbox(bg,500,300,0x0099cc); bg._x=25;bg._y=30; //=============================================================初始化函数 beginclear=function(){ for(i=0;i<sl;i++) {this["sn"+i].removeMovieClip()}; //清除所有蛇的节 fx=sp; fy=0; en=0; go=false; //=================================产生随机的障碍物(实际的游戏制作中应该定义障碍,因为随机可能出现封闭的区域) for(i=0;i<wallnum;i++){ _root.createEmptyMovieClip("wall"+i,10+i); drawbox(this["wall"+i],20,20,0xcc3300); this["wall"+i]._x=bg._x+20*random(25);this["wall"+i]._y=bg._y+20*(1+random(14)); } //==================================产生初始的三节蛇 sl=3; for(i=0;i<sl;i++){ _root.createEmptyMovieClip("sn"+i,100+i); if(i>0){ rcolor=0xffff00} else {rcolor=0x99ffff}; drawcircle(this["sn"+i],4,rcolor); this["sn"+i]._x=bg._x;this["sn"+i]._y=bg._y; } } beginclear(); //初始化场景 //================================================================蛇的运动及检测 onEnterFrame=function(){ if(go){ //是否还能动,能动就执行下面的 //-------------------- if(en==0){ //有没食物,没有就产生个食物 ex=bg._x+20*random(25);ey=bg._y+20*random(15);nowall=true; for(i=0;i<wallnum;i++){ //判断随机产生的坐标上是否有障碍,没有才能放置食物 if(this["wall"+i].hitTest(ex+1,ey+1)) nowall=false; } if(nowall){ en=1;_root.createEmptyMovieClip("ee",1000); //放置食物,食物标志置1 drawcircle(ee,8,0x00ff00);drawbox(ee,4,4,0xff0000);ee._x=ex;ee._y=ey; } } //--------------------蛇的移动,后一节跑前一节的位置上去,蛇头部向控制方向行走 for(j=sl-1;j>0;j--){ t=j-1;this["sn"+j]._x=this["sn"+t]._x;this["sn"+j]._y=this["sn"+t]._y; } sn0._x+=fx;sn0._y+=fy; //--------------------如果食物被蛇头碰到,食物就消失,食物标志清0,蛇身加长 if(ee.hitTest(sn0)){ ee.removeMovieClip();en=0; _root.createEmptyMovieClip("sn"+sl,100+sl); drawcircle(this["sn"+sl],4,0xffff00); t=sl-1;this["sn"+sl]._x=this["sn"+t]._x;this["sn"+sl]._y=this["sn"+t]._y; sl++; } //--------------------检查蛇和障碍、蛇身是否碰撞,是否离开了背景区域,是就停止运动 for(i=0;i<wallnum;i++){ if(this["wall"+i].hitTest(sn0)) go=false; } for(i=2;i<sl;i++){ if(this["sn"+i].hitTest(sn0)) go=false; } if(! bg.hitTest(sn0)) go=false; gameover=go?false:true; } } //================================================================键盘控制 _root.onKeyDown=function(){ if(Key.getCode()==Key.UP){fx=0;fy=-sp}; if(Key.getCode()==Key.DOWN){fx=0;fy=sp}; if(Key.getCode()==Key.LEFT){fx=-sp;fy=0}; if(Key.getCode()==Key.RIGHT){fx=sp;fy=0}; if(Key.getCode()==Key.SPACE){ //空格控制行动、暂停和重新初始化开始 if(! go){ go=true; if(gameover) {beginclear();gameover=false;} }else{go=false;} } } Key.addListener(_root); //监听键盘操作 _root.createTextField("helptxt",10000,80,350,400,30); helptxt.text="空格键=开始、暂停、重新开始 方向键=控制上下左右四个方向"; |
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |