再新建一个图层,重命名为start&man,此图层放置游戏开始时构造迷宫地图的提示信息以及游戏的主角,在第1关键桢输入如图10所示的游戏开始提示信息:

图10
然后在第5祯插入一个空白关键祯,将主角man拖到舞台的任意位置,并在属性面板中设置其Instance
Name为man,如图11所示,并将此图层延续到第7祯:
图11
添加Action:
主场景布置好后,最后的任务就是添加Action控制代码了,新建一个图层,重命名为actions,在第4桢插入一个关键祯,并添加如下AS:
MazeH = 12;
MazeW = 12;
//定义变量MazeH和MazeW,分别代表迷宫地图的高度和宽度,高度以垂直墙壁为单位,//高度以水平墙壁为单位,分别为12个
TotalCells = MazeH*MazeW;
//定义变量TotalCells,其值为迷宫宽度和高度的乘积,代表了迷宫所能容纳的墙壁
//总数
Maze = new Array();
//定义一个数组Maze
for (i=0; i
Room = new Array();
Cell = new Array();
//定义两个新数组Room和Cell
Cell.push(true, true, true, true);
Cell.push(int(i/MazeW));
Cell.push(i%MazeW);
//使用数组对象的Push方法将参数值加到数组中,其中i/MazeW为I和Mazew相除且取//整数部分,I%MazeW取两者相除的余数部分
Room.push(Cell);
Maze.push(Room);
}//最后将数组Cell和Room分别加到数组Room和Maze中,作为数组中最后一个元素
while (true) {
roomNum = random(Maze.length);
cellNum = random(Maze[roomNum].length);
wallNum = random(4);
//分别取三个随机数,roomNum取数组Maze长度内的随机数,用来表示迷宫内的房间号,cellNum取数组Room长度内的随机数,因为roomNum是数组Maze的最大长度,所以数组Maze的第roomNum号元素就是其最后一个元素,也即数组Room。最后一个变量取4以内的随机数,代表房间内不同的四堵墙。
上面的几个数组Maze,Room,Cell之间其实有一个包含与被包含的关系,因为Cell被加入到Room中,而Room又被加入到了Maze中,所以Maze是最外层的数组,其包含了数组Room而数组Room又包含了Cell,这样其实就建立了一个三维数组,Maze代表了整个的迷宫,其元素Room代表了迷宫中的房间,而room中的元素cell则代表了房间里的墙壁,这样层层嵌套,有利于实现下面的撞墙判断脚本。
if (Maze[roomNum][cellNum][wallNum] == false)
{
continue;//如果迷宫中的第roomNum个房间里的第cellNum堵墙的值为faulse,则继续进行判断,直到值为true
}
//判断Maze数组中编号为[roomNum][cellNum][wallNum]的元素值是否为假,如果为
//假,进行下一步循环
x = Maze[roomNum][cellNum][4];
y = Maze[roomNum][cellNum][5];
//分别设置x,y为第roomNum号房间的第cellNum堵墙的第4个和第5个元素
if (wallNum == 0 and x == mazeW-1) {
continue;
} else if (wallNum == 1 and y == mazeH-1) {
continue;
} else if (wallNum == 2 and x == 0) {
continue;
} else if (wallNum == 3 and y == 0) {
continue;
}
//对变量进行判断,然后执行相应的操作
|