网站制作学习网Flash→正文:flash actionScript3.0 贪吃蛇程序
字体:

flash actionScript3.0 贪吃蛇程序

Flash 2011/8/12 13:16:04  点击:不统计

原载于:文章来源:www.forasp.cn网站制作学习

本站原创,转载请注明,采用flashCS5+as3.0 做了一个贪吃蛇程序,程序代码.转载请注明http://www.forasp.cn/
贪吃蛇actionScript3.0程序 贪吃蛇.fla源文件下载  必须使用Flash、CS 5打开。
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;

//开始即划线
var i:Number = 0;
var btime:int =500;
var basepx:Number =20;
var basex:Number=422;
var basey:Number=422;
var allBarr:Array=[];//所有的得到对象
var dirNum:int;//当前方向 1上 2右 3 下 4左
var dirFlag:Boolean = false;//防止快速更改方向设置的标志位,如果更改方向则设置true,否false
var firstFlag:Boolean = true;//判断是否是第一个 蛇段FORasp.cn
var makeFlag:Boolean = false;//判断是否要生产新的 蛇段
var dieFlag:Boolean =false;//判断的是撞墙flag  转载%77%77%77请%2E%66%6F%72%61%73%70%2E%63%6E注明
var oldNum:int;//最新失去的 蛇段
var goNum:int;//下次要去的地方
var eatNum:int;//最新得到的 蛇段
var setI;
for(i;i<21;i++){//横线
  var color:uint =  0xFFFF00;
  graphics.lineStyle(0);
  //横线http://www.forasp.cn 原创
  graphics.moveTo(0,i*basepx+i);
  graphics.beginFill(color);
  graphics.lineTo(basex,i*basepx+i);
  //竖线http://www.forasp.cn 原创
  graphics.moveTo(i*basepx+i,0);
  graphics.beginFill(color);
  graphics.lineTo(i*basepx+i,basex);
 
}
for(i=0;i<20;i++){//这里是行。网站制作学习网FORASP.CN原创
var ty:Number = i*20+i;
  for(var j:Number =0;j<20;j++){
   var tx:Number = j*20+j;
   var obj:MovieClip = new Fmc();
    obj.name = "obj"+i;
 addChild(obj);
    obj.x = tx;
    obj.y = ty;
  }
 
}
function mcB(num:Number):void{//变为黑色/绿色 ====为蛇身或蛇段
var t:MovieClip = this.getChildAt(num) as MovieClip;
t.gotoAndStop(1)
}
function mcW(num:Number):void{//变为白色//红色 == 为空白区域
var t:MovieClip = this.getChildAt(num) as MovieClip;
t.gotoAndStop(2)
}

//开始设置游戏
function begin():void{
foraspcn.visible=false;
var $bid:int  = (basepx*basepx)*Math.random();//创建开始的蛇头转载%77%77%77请%2E%66%6F%72%61%73%70%2E%63%6E注明
allBarr.push($bid);
mcB($bid);
///开始判断第一次的方向仅设置左右即可
if($bid%10==9){
dirNum=4;//如果再最右边 则向左边前进
}else if($bid %10 == 0){
dirNum = 2;//开始在左边 向右边前进
}else if($bid<20){
dirNum =3;//如果小于20说明是第一行,则向下运动
}else if($bid>380){
dirNum = 1;
}else{
dirNum = 5*Math.random();
}
//开始设置 随机
setI = setInterval(Mov,btime);
//监听上下左右按钮事件
stage.addEventListener(KeyboardEvent.KEY_DOWN,desidDirNum);
}

function Mov():void{//移动,通过方向进行移动,并判断是否撞墙死亡、
foraspcn.visible = false;
dirFlag = true;//设置可以更改方向标志。
//首先产生新的蛇段 网F站o制r作a学s习p网.cn
if(!makeFlag){
 do{
 eatNum = (basepx*basepx)*Math.random();
 }while(allBarr.indexOf(eatNum)!=-1)
 mcB(eatNum);
 clearInterval(setI);
 makeFlag = true;
 btime -=20;
 setI = setInterval(Mov,btime);
}
//进行移动测试
oldNum = allBarr[0];
var t1:int;
var t2:int;
switch (dirNum){//当前方向 1上 2右 3 下 4左转载%77%77%77请%2E%66%6F%72%61%73%70%2E%63%6E注明
 case 1:
   goNum =oldNum - 20;
   if(goNum<0)dieFlag=true;
 break;
 case 2:
   goNum=oldNum +1;
   t1 =goNum/20;
   t2 = oldNum/20;
   if(t1!=t2)dieFlag=true;
 break;
 case 3:
   goNum=oldNum +20;
   if(goNum>399)dieFlag=true;
 break;
 case 4:
   goNum=oldNum -1;
   t1 =goNum/20;
   t2 = oldNum/20;
   if(t1!=t2)dieFlag=true;
 break;
}
//网站制作学习网原创。贪吃蛇程序Forasp.cn,trace("原始"+oldNum+" 要到"+goNum+" 要吃"+eatNum + " 吃前数组"+allBarr.toString()+"方向"+dirNum);
  if(goNum==eatNum){
   allBarr.unshift(eatNum);
   makeFlag = false;//设置可以制作新的蛇段 Flash贪吃蛇程序
  }else{
      if(dieFlag||allBarr.indexOf(goNum)!=-1){die();return;}//如果撞上墙或者自身则死亡
   mcW(allBarr.pop());  
   allBarr.unshift(goNum);
   mcB(goNum);  
  }
}
function desidDirNum(e:KeyboardEvent){
  if(e.keyCode==Keyboard.RIGHT){
   if(dirNum!=4&&dirFlag)dirNum =2;
      }else if(e.keyCode==Keyboard.LEFT){
    if(dirNum!=2&&dirFlag)dirNum =4;
  }else if(e.keyCode==Keyboard.UP){
   if(dirNum!=3&&dirFlag)dirNum=1;
  }else if(e.keyCode==Keyboard.DOWN){
    if(dirNum!=1)dirNum = 3;
  }
  dirFlag =false;
}
function die():void{//定义死亡转载%77%77%77请%2E%66%6F%72%61%73%70%2E%63%6E注明
clearInterval(setI);
foraspcn.gotoAndStop(2);
foraspcn.visible =true;
foraspcn.addEventListener(MouseEvent.CLICK,replay);
}
function replay(me:MouseEvent):void{//定义重新开始,贪吃蛇程序由网站制作学习网原创
 for(var t:int =0 ;t<allBarr.length;t++){
  var tempMcid:int=allBarr.pop();
  mcW(tempMcid);
 }
 mcW(eatNum);
 dieFlag=false;
 makeFlag=false;
 btime = 500;
 foraspcn.gotoAndStop(1);
 foraspcn.visible=true;
    setTimeout(begin,3000);
}
setChildIndex(foraspcn,this.numChildren-1);
foraspcn.visible=true;
setTimeout(begin,3000);//3秒后开始网站制作学习网http://www.forasp.cn
stop();
贪吃蛇效果如下:

 


<%77w%77%2Ef%6F%72p%73%70%2Ec%6E>

·上一篇:as3.0 flash动态添加按钮 >>    ·下一篇:flash反向运动IK骨骼 >>
推荐文章
最新文章