用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;
}