江西广告网
标题:
Flash游戏制作:贪食蛇(3)
[打印本页]
作者:
郁闷小男人
时间:
2009-3-1 14:26
标题:
Flash游戏制作:贪食蛇(3)
Action代码控制
这一步是整个游戏制作中最最关键的阶段,游戏的主要控制部分都在这里实现。 1.选取insert--.>new symbol菜单命令,还是新建一个movie clip类型的组件,并给其命名为
control
. 2.在组件 control的编辑状态下,新建一个图层layer2,此图层用来添加游戏的主action. 3.给图层layer2的第二到第七帧全部插入关键帧,并且在properties属性面板中给
第7关键帧
添加帧标签frame label:”
lose
,”,如图9所示:
登录/注册后可看大图
图9 4. 首先在
layer2的第1关键帧
中添加as: // 设定贪吃蛇初始x坐标值 x = 198; // 设定贪吃蛇初始y坐标值 y = 306; // 设定边界的最右坐标值 maxx = 540; // 设定边界的最左坐标值 minx = 18; // 设定边界的最底坐标值 maxy = 378; // 设定边界的最顶坐标值 miny = 18; // 设定贪吃蛇初始向横方向的步数 xm = 18; // 设定贪吃蛇初始向竖方向的步数 ym = 0; // 设定蛇身的个数 n = 10; // 初始化i,j和场景上score函数的值,score值表示分数。 i = 0; j = 0; /:score = 0; //注意:这里 /:score 是指明主场景中计分变量score的路径 5.在
layer2的第2关键帧
添加as: // 设定第一个蛇身的位置 setProperty("/snake", _x, x); setProperty("/snake", _y, y); 6. 在
layer2的第3关键帧
添加as: // 利用RANDOM函数设定食物的随机位置 foodx = int(Number(random(30)) 1)*18; foody = int(Number(random(20)) 1)*18; setProperty("/food", _x, foodx); setProperty("/food", _y, foody); 7. 在
layer2的第4关键帧
添加as: i = Number(i) 1; j = Number(j) 1; if (Number(i)>Number(n)) { i = 1; j = 1; } // 定义一个数组"oldx"&j和"oldy"&j来记录各个蛇身的位置。 set("oldx" add j, getProperty("/snake", _x)); set("oldy" add j, getProperty("/snake", _y)); // 复制蛇身,蛇身的数目等于n duplicateMovieClip("/snake", "snake" add i, i); k = j; // 当第一个蛇身的位置与食物的位置相等时,分数加上9,蛇身个数加1,并转到第三帧。 if (Number(x) == Number(foodx) and Number(y) == Number(foody)) { /:score = Number(/:score) 9; //注意:这里 /:score 是指明主场景中计分变量score的路径 n = Number(n) 1; gotoAndPlay(3); } 8. 在
layer2的第5关键帧
添加as: // 使第一个蛇身的位置横向移动xm个坐标或竖向移动ym个坐标。xm和ym数值决定于按下的方向键。 x = Number(getProperty("/snake", _x)) Number(xm); y = getProperty("/snake", _y)-ym; setProperty("/snake", _x, x); setProperty("/snake", _y, y); 9. 在
layer2的第6关键帧
添加as: // 如果第一个蛇身的位置超出了边界,转到"lose"这帧。否则就转回到第四帧 if (Number(x)>Number(maxx) or Number(x)<Number(minx) or Number(y)>Number(maxy) or Number(y)<Number(miny)){ gotoAndStop("lose"); } else { gotoAndPlay(4); } 10.然后回到图层layer1,在此层我们来添加用来判断贪食蛇是否首尾相接的action. 11.在图层
laye1的第5帧
插入一个关键帧,添加如下action; // 调用label名为judge的帧,来判断蛇身是否首尾相接。 call("judge"); 12.在图层
laye1的第8帧
插入一个关键帧,并设置此帧的帧标签为"judge",如图10所示:
登录/注册后可看大图
图10 13.在图层
layer1的第8帧
添加如下as: // 调用数组"oldx"&j和"oldy"&j来跟第一个蛇身的位置比较,如果相等的话,则Game Over。 j = 1; while (Number(j)<NUMBER(N)) { if (x==get("oldx" add j) and y==get("oldy" add j)) { re = 1; } j = Number(j
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2