flash actionScript3.0 贪吃蛇程序
原载于:文章来源: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>