全部代码如下:
/************2005.5**************/
/*********贪吃蛇简陋版************/
/***********寒冰(胡乱编写)********/
vars_x=0;
vars_y=0;
vardir=[[-1,0],[0,-1],[1,0],[0,1]];
//四个方向
var_dir;
varc_x=(Stage.width-256)/2;
varc_y=(Stage.height-256)/2;
varmap;
varspeed;
varlevel=1;
varchild_num;
varChild;
varsnake_arr;
init();
functioninit(){
speed=15;
child_num=1;
snake_arr=[];
DrawOutRound();
//画外框
DrawMap();
//画地图
SnakeRun();
//蛇移动
MakeWall();
//创建障碍物
MakeChild();
//创建食物(后来变成蛇身)
createTextField("info",getNextHighestDepth(),30,350,400,20);
createTextField("status",getNextHighestDepth(),320,370,100,20);
status.text="状态:playing";
info.text="[用方向键控制方向,dead后请点鼠标重新开始]____寒冰制造";
}
functionDrawBox(name,color,w,h){
//画方块
var_b=createEmptyMovieClip(name,getNextHighestDepth());
with(_b){
lineStyle(0);
beginFill(color);
lineTo(w,0);
lineTo(w,h);
lineTo(0,h);
endFill();
}
return_b;
}
functionDrawOutRound(){
DrawBox("outround",0xffffff,400,400);
}
functionDrawMap(){
var_box=DrawBox("box",0xffffff,16,16);
_box._visible=false;
map=[];
for(vari=0;i<16;i++){
map[i]=[];
for(varj=0;j<16;j++){
map[i][j]=0;
_box.duplicateMovieClip("_map"+i+j,getNextHighestDepth(),{_x:c_x+j*16,_y:c_y+i*16});
}
}
//trace(map)
}
functionMakeSnake(){
varSnake=DrawBox("snake",0x000000,16,16);
snake_arr.push(snake);
Snake.x=s_x;
Snake.y=s_y;
//map[Snake.y][Snake.x]=1;
Snake._x=c_x+s_x*16;
Snake._y=c_y+s_y*16;
returnSnake;
}
functionSnakeRun(){
varS=MakeSnake();
vari=0;
_dir=dir[3];
SnakeControl();
S.onEnterFrame=function(){
if(++i>100/speed){
ChildRun();
i=0;
if(map[this.y+_dir[1]][this.x+_dir[0]]==0){
}elseif(map[this.y+_dir[1]][this.x+_dir[0]]==8){
speed++;
map[this.y+_dir[1]][this.x+_dir[0]]==0;
snake.swapDepths(getNextHighestDepth());
Child._name=Child._name.substr(1);
snake_arr.push(Child);
MakeChild();
}else{
status.text="状态:over";
deletethis.onEnterFrame;
return;
}
this.x+=_dir[0];
this.y+=_dir[1];
this._x=c_x+16*this.x;
this._y=c_y+16*this.y;
}
};
//trace(S);
}
functionSnakeControl(){
varobj={};
obj.onKeyDown=function(){
varkey=Key.getCode();
switch(key){
case37:
_dir=dir[0];
break;
case38:
_dir=dir[1];
break;
case39:
_dir=dir[2];
break;
case40:
_dir=dir[3];
}
};
Key.addListener(obj);
}
functionRndArr(){
//随机乱数,为了取得随机的障碍物的位置,不过这里用随机是为了偷懒,应该固定位置的.
vararr=[];
for(vari=1;i<256;i++){
arr[i-1]=i;
}
arr.sort(function(){
returnrandom(2)?1:-1;
});
returnarr;
}
functionMakeChild(){
varrgb=0x0000ff;
Child=DrawBox("_child"+child_num,rgb,16,16);
Child._alpha=0;
Child.onEnterFrame=function(){
if((this._alpha+=5)>100){
deletethis.onEnterFrame;
}
};
do{
varx=random(16);
vary=random(16);
}while(map[y][x]!=0or(x==0andy==0));
Child.createTextField("txt",Child.getNextHighestDepth(),0,0,16,16);
//食物上的数字
Child.txt.textColor="0xffffff";
Child.txt.text=child_num;
map[y][x]=8;
Child._x=c_x+x*16;
Child._y=c_y+y*16;
child_num++;
}
functionMakeWall(){
var_arr=RndArr();
for(vari=0;i
varx=_arr[i]%16;
vary=int(_arr[i]/16);
map[y][x]=1;
varWall=DrawBox("wall"+i,0xff0000,16,16);
Wall._x=c_x+x*16;
Wall._y=c_y+y*16;
}
}
functionChildRun(){
for(varjinsnake_arr){
map[snake_arr[j].y][snake_arr[j].x]=0;
}
for(vari=child_num;i>0;i--){
varlast_child=this["child"+(i-1)];
if(last_child==child0){
last_child=snake;
}
this["child"+i].x=last_child.x;
this["child"+i].y=last_child.y;
map[this["child"+i].y][this["child"+i].x]=1;
this["child"+i]._x=c_x+this["child"+i].x*16;
this["child"+i]._y=c_y+this["child"+i].y*16;
}
}
onMouseDown=function(){
//鼠标点击进行刷新,重新开始
for(variinthis){
if(this[i].__proto__==MovieClip.prototype){
this[i].removeMovieClip();
}elseif(this[i].__proto__==TextField.prototype){
this[i].removeTextField();
}
}
init();
}
//晚上边玩边弄的,居然写了这么多.bug多多哦,只是个大概样子,唬唬人的: )
点击浏览该文件