注册
 找回密码
 注册
江西广告网
查看: 280|回复: 0
打印 上一主题 下一主题

Flash游戏制作:贪食蛇(3)

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-3-1 14:26:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表