|
balls = 5; play(); }
给intermediate按钮添加AS: on (release) { balls = 4; speed = 10; play(); }
给Addvanced按钮添加AS: on (release) { speed = 12; balls = 3; play(); }
最后主场景如图17所示:
 图17
6.最后一步就需要在主场景中添加游戏控制代码了,新建一个图层命名为action,在此图层第1 帧添加as: setProperty("/paddle", _visible, true); setProperty("/ball", _visible, true); score = 0; stop(); //刚开始设置小球和挡板为可见,并且设置初始得分为0,然后影片停止在第一帧,//等待玩家选择游戏难度。
在此图层第2 帧添加as: startDrag("/paddle", false, 240, 420, 560, 420); //对挡板进行拖动 ballx = 300; bally = 400; speedx = 8; speedy = -8; ballwidth = 16; paddlewidth = 80; brickwidth = 40; Level_index = 10; bricknumber = 0; Level_i = 1; modified = true; endgame = false; border = 250; //定义并初始化一系列变量,将在后面的代码中用到这些变量 在此图层第3帧添加as: if (endgame) //变量endgame标识游戏是否结束,如果游戏结束,则跳转到第5帧 if (Number(bricknumber)<=0) { Level_i = Level_index-9; call(Level_index); //设置游戏等级,也就是等级文本框中的内容,将调用自定义函数level_index. setProperty("/brick", _visible, false); setProperty("/brickblue", _visible, false); setProperty("/brickgreen", _visible, false); setProperty("/brickred", _visible, false); //设置工作区中的方砖不可见 ballx = 300; bally = 400; speedx = Number(speed) Number(xspeed)-5; speedy = -speed-xspeed; } //设置小球位置和运动速度,ballx和bally代表小球坐标,speedx和speedy代//表小球横向和纵向的移动速度。 ballx = Number(ballx) Number(speedx); bally = Number(bally) Number(speedy); //根据小球移动速度改变小球坐标 if (Number(bally)<=Number(border)) { b = int(ballwidth/2); c1 = int((ballx-200)/40); r1 = int((bally-b-40)/20); c2 = int((ballx-b-200)/40); r2 = int((bally-40)/20); c3 = int((ballx-200)/40); r3 = int((Number(bally) Number(b)-40)/20); c4 = int((Number(ballx) Number(b)-200)/40); r4 = int((bally-40)/20); i = 1; while (Number(i)<=4) { r = eval ( "r" add i ); c = eval ( "c" add i ); IsVisible = getProperty ("brick" add r add c,_currentframe); if (Number(IsVisible) == 1) { bricknumber = bricknumber-1; score = Number(score) 100; destroy = r add c; tellTarget ("brick" add destroy) if ((Number(i) == 2) or (Number(i) == 4)) { speedx = -speedx; ballx = Number(ballx) Number(speedx); i = 5; } else { speedy = -speedy; bally = Number(bally) Number(speedy); i = 5; } } i = Number(i) 1; } } //上面的一系列代码用来判断和小球和方砖的碰撞,然后方砖消失
if ((Number(ballx)>=Number(600-ballwidth/2)) or (Number(ballx)<=Number(200 Number(ballwidth/2)))) { speedx = -speedx; ballx = Number(ballx) Number(speedx); tellTarget ("/sound") } if (Number(bally)<=Number(41 Number(int(ballwidth/2)))) { tellTarget ("/sound") speedy = -speedy; bally = Number(bally) Number(speedy);
//判断小球和墙壁的碰撞,然后计算反弹方向和速度
paddlex = getProperty("paddle", _x); if ((Number(bally)>404) and (Number(ballx)>Number((paddlex-paddlewidth/2-8))) and (Number(ballx)<Number((Number(Number(paddlex) Number(paddlewidth/2)) 8)))) { if (Number(ballx)<Number(Number(paddlex-paddlewidth/2) Number(int(paddlewidth/5)))) { speedx = speedx-6; } else if (Number(ballx)>Number(Number(paddlex) Number(paddlewidth/2)-int(paddlewidth/5))) { speedx = Number(speedx) 6; } else if (Number(ballx)<Number(Number(paddlex-paddlewidth/2) Number(int(paddlewidth/3)))) { speedx = speedx-3; } else if (Number(ballx)>Number(Number(paddlex) Number(paddlewidth/2)-int(paddlewidth/3))) { speedx = Number(speedx) 3; } speedy = -speedy; bally = Number(bally) Number(speedy); tellTarget ("/sound") } //判断小球和挡板的碰撞,然后计算反弹方向和速度
setProperty("/ball", _x, ballx); setProperty("/ball", _y, bally); //设置小球的新位置,从而移动小球 在此图层第4 帧添加as: if (Number(balls)<1) { endgame = true; gotoAndStop(6); } //如果生命值balls为0,则游戏结束 gotoAndPlay("loopback"); 在此图层第5 帧添加as: setProperty("/paddle", _visible, false); //设置档板为不可见 tellTarget ("background")
在此图层第6 帧添加as: stopDrag(); //停止拖动挡板 c = 0; r = 0; //c和r为两个循环变量 while (Number(r)<18) { while (Number(c)<10) { removeMovieClip("brick" add r add c); c = Number(c) 1; } r = Number(r) 1; c = 0; } //初始化变量,对游戏进行数值统计
在此图层第7 帧添加as: stop();
在此图层第10 帧添加as: xspeed = 0; border = 240; bricknumber = 50; Level_index = Number(Level_index) 1; //设置游戏的等级 c = 0; r = 0; //c和r为两个循环变量 count = 1; index = 0; while (Number(r)<5) { while (Number(c)<Number(10-index)) { duplicateMovieClip("/brickred", "brick" add r add c, Number(count) 1); setProperty("brick" add r add c, _x, 220 Number(40*c)); setProperty("brick" add r add c, _y, 50 Number(20*r)); c = Number(c) 1; count = Number(count) 1; } //复制对象brickred r = Number(r) 2; index = Number(index) 2; c = index; } c = 1; r = 1; //c和r为两个循环变量 index = 0; while (Number(r)<5) { while (Number(c) duplicateMovieClip("/brickblue", "brick" add r add c, Number(count) 1); setProperty("brick" add r add c, _x, 220 Number(40*c)); setProperty("brick" add r add c, _y, 50 Number(20*r)); c = Number(c) 1; count = Number(count) 1; } //复制对象brickblue r = Number(r) 2; index = Number(index) 2; c = Number(index) 1; } c = 0; r = 7; //c和r为两个循环变量 while (Number(r)<9) { while (Number(c)<10) { duplicateMovieClip("/brickgreen", "brick" add r add c, Number(count) 1); //复制对象brickgreen,一共复制16个 setProperty("brick" add r add c, _x, 220 Number(40*c)); setProperty("brick" add r add c, _y, 50 Number(20*r)); c = Number(c) 1; count = Number(count) 1; } //设置复制出的砖块的坐标 c = 0; r = Number(r) 1; } setProperty("/brick", _visible, false); 在此图层第11 帧添加as,下面的as和第10帧相类似,不过游戏的等级更高 xspeed = 1; border = 150; bricknumber = 50; Level_index = Number(Level_index) 1; c = 0; r = 0; //c和r为两个循环变量 count = 1; while (Number(r)<5) { while (Number(c)<10) { if (((Number(r)<=Number(c)) and (Number(c)<5)) or ((Number(c)>=5) and (Number(c)<=Number(9-r)))) { duplicateMovieClip("/brick", "brick" add r add c, Number(count) 1); } else { duplicateMovieClip("/brickgreen", "brick" add r add c, Number(count) 1); } setProperty("brick" add r add c, _x, 220 Number(40*c)); setProperty("brick" add r add c, _y, 50 Number(20*r)); count = Number(count) 1; c = Number(c) 1; } //复制对象brick r = Number(r) 1; c = 0; }
在此图层第12 帧添加as, 下面的as和第11帧相类似,不过游戏的等级更高 xspeed = 2; border = 330; bricknumber = 60; c = 0; r = 0; //c和r为两个循环变量 count = 1; while (Number(r)<14) { while (Number(c)<10) { if ((Number(r) == 5) or (Number(r) == 8)) { duplicateMovieClip("/brickred", "brick" add r add c, Number(count) 1); } else if ((Number(r) == 13) or (Number(r) == 0)) { duplicateMovieClip("/brickblue", "brick" add r add c, Number(count) 1); } else if ((Number(r) == 7) or (Number(r) == 6)) { duplicateMovieClip("/brick", "brick" add r add c, Number(count) 1); } setProperty("brick" add r add c, _x, 220 Number(40*c)); setProperty("brick" add r add c, _y, 50 Number(20*r)); c = Number(c) 1; count = Number(count) 1; } r = Number(r) 1; c = 0; } setProperty("/brick", _visible, false);
在此图层第13 帧添加as,下面的as和第12帧相类似,不过游戏的等级更高 xspeed = 3; border = 250; bricknumber = 72; c = 0; r = 0; //c和r为两个循环变量 count = 1; while (Number(r)<10) { while (Number(c)<10) { if (((Number(r)>1) and (Number(r)<8) and (Number(c)>3) and (Number(c)<6)) or ((Number(c)>1) and (Number(c)<8) and (Number(r)>3) and (Number(r)<6))) { duplicateMovieClip("/brickgreen", "brick" add r add c, Number(count) 1); } else if (((Number(r) == Number(Number(5-9) Number(c))) and (Number(r)>0) and (Number(r)<5)and (Number(c)>4) and (Number(c)<9)) or ((Number(r) == Number(5-c)) and (Number(r)>0) and (Number(r)<5) and (Number(c)>0) and (Number(c)<5)) or ((Number(9-r) == Number(5-c)) and (Number(r)>4) and (Number(r)<9) and (Number(c)>0) and (Number(c)<5)) or ((Number(9-r) == Number(Number(5-9) Number(c))) and (Number(r)>4) and (Number(r)<9) and (Number(c)>4) and (Number(c)<9))) { duplicateMovieClip("/brickred", "brick" add r add c, Number(count) 1); } else if ((Number(r)>8) or (Number(r) == 0) or (Number(c) == 0) or (Number(c) == 9)) { duplicateMovieClip("/brickblue", "brick" add r add c, Number(count) 1); } setProperty("brick" add r add c, _x, 220 Number(40*c)); setProperty("brick" add r add c, _y, 50 Number(20*r)); c = Number(c) 1; count = Number(count) 1; } r = Number(r) 1; c = 0; } setProperty("/brick", _visible, false);
在此图层第14 帧添加as,下面的as和第13帧相类似,不过游戏的等级更高 border = 370; bricknumber = 116; c = 0; r = 0; //c和r为两个循环变量 count = 1; while (Number(r)<16) { while (Number(c)<10) { if (((Number(r)>1) and (Number(r)<9) and (Number(c) == 3)) or ((Number(r)>1) and (Number(r)<9)and (Number(c) == 6))) { duplicateMovieClip("/brickblue", "brick" add r add c, Number(count) 1); } else if (((Number(r)>1) and (Number(r)<9) and (Number(c) == 1)) or ((Number(r)>1) and (Number(r)<9) and (Number(c) == 8))) { duplicateMovieClip("/brickred", "brick" add r add c, Number(count) 1); } else if (((Number(r) == 0) and (Number(c)>2) and (Number(c)<7)) or ((Number(r) == 7) and (Number(c)>2) and (Number(c)<7)) or ((Number(r) == 8) and (Number(c)>2) and (Number(c)<7))) { duplicateMovieClip("/brickblue", "brick" add r add c, Number(count) 1); } else if ((Number(r) == 1)) { duplicateMovieClip("/brickgreen", "brick" add r add c, Number(count) 1); } else if (Number(r)>8) { duplicateMovieClip("/brick", "brick" add r add c, Number(count) 1); } setProperty("brick" add r add c, _x, 220 Number(40*c)); setProperty("brick" add r add c, _y, 50 Number(20*r)); c = Number(c) 1; count = Number(count) 1; } r = Number(r) 1; c = 0; v} setProperty("/brick", _visible, false);
在此图层第15 帧添加as: endgame = true; Level_index = Number(Level_index) 1;
最后时间线如图18所示:
 图18
最后您就可以进行游戏的测试了。本游戏的制作难度属于中等难度,掌握好此游戏的制作方法,您还可以尝试更复杂一些的游戏制作。
[3] [4] [5]
上一页 [1] [2] [3] [4] [5] 下一页
|