万卷书   首页 > 电脑书籍 > Flash > Flash游戏制作--迷宮
 

  再新建一个图层,重命名为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;

}

//对变量进行判断,然后执行相应的操作

 

 

上一页 下一页