用FL做一个迷宫游戏,用ActionScript 3.0写脚本。急用!!很快就要到期了。谢谢你。

这是写在时间线上的。

将舞台设置为800*800即可全看;

导入flash . display . shape;

导入flash . display . sprite;

导入flash . display . stagescalemode;

导入flash . events . keyboard event;

导入flash . geom . point;

导入flash . text . textfield;

导入flash . ui . keyboard;

/* *地图宽度*/

var mapW:int = 20;

/* *地图高度*/

var mapH:int = 20;

/* *网格大小*/

var gridSize:int = 40;

/* *地图数据*/

var mapdata arr:Array =[];

/* *终点*/

var finalPoint:Point =新点;

/* *出生地*/

var startPoint:Point =新点;

/* *当前位置*/

var curposition:Point =新点;

/* *玩家*/

var玩家:形状=新形状;

/* *信息文本*/

var infoText:TextField = new TextField;

stage.scaleMode = StageScaleMode。NO _ SCALE

stage . stage width = 1000;

stage.stageHeight = 800

player = new Shape();

player . graphics . begin fill(0x ff 0000);

player.graphics.drawCircle(20,20,10);

player . graphics . end fill();

init();

this . stage . addevent listener(keyboard event。KEY_DOWN,onKey);

infoText =新文本字段;

infoText.autoSize = " left

infotext . text color = 0x 00 ffff;

addChild(infoText);

/**

*初始化

* */

函数init():void

{

mapDataArr = [

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1

];

draw map(mapdata arr);

infoText.text =

finalPoint =新点(18,19);

startPoint =新点(0,1);

curPostion =新点(0,1);

player . x = curpostion . x * gridSize;

player . y = curpostion . y * gridSize;

addChild(播放器);

}

/* *画地图*/

函数drawMap(arr:Array):void

{

this . graphics . clear();

this . graphics . begilling(0x 000000);

var len:int = arr . length;

for(var a:int = 0;a & ltlena++)

{

if(arr[a] == 1)

{

this . graphics . drawrect(int(a % mapW)* gridSize,int(a/mapW)*gridSize,gridSize,gridSize);

}

}

this . graphics . end fill();

}

/**

*按下按钮,开始行走。

* @param evt

*

*/

函数onKey(evt:KeyboardEvent):void

{

var点:点=新点;

开关(电动钥匙代码)

{

机箱键盘。向上:

point . x = curposition . x;

point . y = curposition . y-1;

如果(!isRight(点))

{

返回;

}

curPostion = point

player . x = curpostion . x * gridSize;

player . y = curpostion . y * gridSize;

打破;

机箱键盘。向下:

point . x = curposition . x;

point . y = curposition . y+1;

如果(!isRight(点))

{

返回;

}

curPostion = point

player . x = curpostion . x * gridSize;

player . y = curpostion . y * gridSize;

打破;

机箱键盘。左侧:

point . x = curposition . x-1;

point . y = curposition . y;

如果(!isRight(点))

{

返回;

}

curPostion = point

player . x = curpostion . x * gridSize;

player . y = curpostion . y * gridSize;

打破;

机箱键盘。右:

point . x = curposition . x+1;

point . y = curposition . y;

如果(!isRight(点))

{

返回;

}

curPostion = point

player . x = curpostion . x * gridSize;

player . y = curpostion . y * gridSize;

打破;

}

if(curposition . x = = final point . x & amp;& ampcurposition . y = = final point . y)

{

trace("游戏结束!");

InfoText.text = "找到出口";

}

}

/* *判断一个点是否正确*/

函数isRight(p:Point):Boolean

{

if(p . x & lt;0 | | p.x & gt19)返回false

if(p . y & lt;0 | | p.y & gt19)返回false

return mapdata arr[p . y * mapW+p . x]= = 0;

}