欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供photoshop教程,ps教程,flash教程,cad教程,网页制作教程,excel教程,asp教程,vb教程,3d教程,c语言教程,html教程,coreldraw教程,dreamweaver教程,java教程,3dmax教程 等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图 设为首页
简繁切换 加入收藏
栏目待定 留言本站
您现在的位置: 无师自通-教程网 >> 多媒体动画 >> Flash教程 >> Flash游戏实例教程 >> 教程正文

  没有公告

教程: Flash教程-Flash游戏实例教程-Flash游戏制作--迷宮 更多...
教程: Flash教程-Flash游戏实例教程-Flash游戏制作--迷宮

层,重命名为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)

//判断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) else if (wallNum == 1 and y == mazeH-1) else if (wallNum == 2 and x == 0) else if (wallNum == 3 and y == 0)

//对变量进行判断,然后执行相应的操作
oppsCell = new Array();

//定义新数组oppsCell

if (wallNum == 0) {

oppsCell = fun_findcell(x 1, y);

} else if (wallNum == 1) {

oppsCell = fun_findcell(x, y 1);

} else if (wallNum == 2) {

oppsCell = fun_findcell(x-1, y);

} else if (wallNum == 3) {

oppsCell = fun_findcell(x, y-1);

}

// 根据墙壁编号的不同,分别调用参数不同的函数,fun_findcell为自定义函数

if (oppsCell[0] == roomNum)

if (wallNum == 0) {

oppsWall = 2;

} else if (wallNum == 1) {

oppsWall = 3;

} else if (wallNum == 2) {

oppsWall = 0;

} else if (wallNum == 3) {

oppsWall = 1;

}

// 打开单元格中的一堵墙

Maze[roomNum][cellNum][wallNum] = false;

Maze[oppsCell[0]][oppsCell[1]][oppsWall] = false;

Maze[roomNum] = Maze[roomNum].concat(Maze[oppsCell[0]]);

Maze.splice(oppsCell[0], 1);

//用四个墙壁将空间封闭

if (Maze.length == 1)

}

function fun_findcell (a, b) {

reCell = new Array();

for (i=0; i
for (j=0; j
if (Maze[i][j][4] == a && Maze[i][j][5] == b) {

reCell.push(i, j);

return reCell;

}

}

}

}

//自定义函数fun_findcell,用来寻找没有封闭的单元格
在第5祯添加如下AS;

Maze=Maze[0];

cellW=30;

wn=0;

//定义三个变量

for (i=0; i
cellX = Maze[i][4];

cellY = Maze[i][5];

for (j=0; j<4; j ) {

if (Maze[i][j] == true) {

_root.attachMovie("w" j, "ww" wn, wn);

eval("ww" wn)._x = 105 cellW*cellX;

eval("ww" wn)._y = 35 cellW*cellY;

wn ;

}

}

}

//控制游戏主角在迷宫中运动,并对路线进行判断

man._x=105;

man._y=35;

//设置游戏主角的坐标

man.gotoAndStop(1);

//主角处于游戏进行状态

exit._x=105 11*cellW;

exit._y=35 11*cellW;

//设置迷宫出口坐标

manX = 0;

manY = 0;

  在第6祯和第7祯都添加AS; stop();,用以停止游戏进行,以便让玩家选择,同时设置第7祯的祯标签为playagain,接下来给重玩按钮设置AS;

on (release) {

for(i=0;i
removeMovieClip("ww" i);

}

gotoAndPlay (1);

}

//将游戏中复制出的迷宫墙壁全部清除掉,然后回到游戏开始重新构造迷宫地图

  最后的时间轴如图12所式:

图12

  到此为止,迷宫游戏就制作完成了,可以看到,游戏中使用的对象非常少,主要功能全部由AS来实现,这也是用Flash制作游戏和一般动画很大的不同。



上一页  [1] [2] 

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
     
     
     

    3DsMAX实例制作:三维玻璃灯泡

    3dmax在线教程--蝴蝶

    3ds max时尚水晶鞋

    精彩Flash制作风吹草动效果动画

    教程: 3DS Max-设计实例-三维虚拟…

    3dmax7.0教程--火焰特效

    绘画技巧:Flash绘制人头造型

    3ds max 室内设计---室内效果图
    免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
    辽ICP备07003958号
    无师自通,伴你一生-教程网