失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Flash游戏制作:贪食蛇(3)

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

时间:2023-08-05 11:43:15

相关推荐

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

Flash游戏制作:贪食蛇(3),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

如果觉得《Flash游戏制作:贪食蛇(3)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。