快速业务通道

Flash游戏设计之迷宫篇

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-10
int(i/MazeW));
?Cell.push(i%MazeW);
?Room.push(Cell);
?Maze.push(Room);
}
while (true) {
roomNum = random(Maze.length);
cellNum = random(Maze[roomNum].length);
// 取三个随机数
wallNum = random(4);
// 判断Maze数组的元素[roomNum][cellNum][wallNum]的值是否为假,如果为假,进行下一步循环
if (Maze[roomNum][cellNum][wallNum] == false) {
??continue;
?}
// 判断“线段”元件的编号,执行相应的操作
x = Maze[roomNum][cellNum][4];
y = Maze[roomNum][cellNum][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;
?}
oppsCell = new Array();
// 根据不同“线段”元件的编号分别调用参数不同的函数,fun_findcell为自定义函数
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);
?}
?if (oppsCell[0] == roomNum) {
??continue;
?}
// 使迷宫地图能够产生一个通道
?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) {
??break;
?}
}
// 自定义函数fun_findcell,用来寻找没有封闭的单元格
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;
???}
??}
}
}

在第4帧中键入如下代码:

// 定义三个变量
Maz = 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帧都添加语句“stop();”,用以停止游戏地运行。

  4.创建一个“重玩”层,在第6帧插入一个关键帧,从库中把“重玩”按钮元件放置到场景右边。点选该元件,按F9键打开“动作”面板,键入如下代码。
on (release) {
// 清除地图,回到第1帧中重新构造地图
?for(i=0;i??removeMovieClip("ww"+i);
?}
?gotoAndPlay (1);
}
  到这里迷宫游戏就制作完成了。 ?
  该效果源件下载(58.8K)   点击最后一页预览效果 上一页??[1]?[2]?[3]?[4]?[5]?下一页?? ? 上一页??[1]?[2]?[3]?[4]?[5]? 关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号