欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供photoshop教程,ps教程,flash教程,cad教程,网页制作教程,excel教程,asp教程,vb教程,3d教程,c语言教程,html教程,coreldraw教程,dreamweaver教程,java教程,3dmax教程 等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图 设为首页
简繁切换 加入收藏
栏目待定 留言本站
您现在的位置: 无师自通-教程网 >> 多媒体动画 >> Flash教程 >> Flash游戏实例教程 >> 教程正文

  没有公告

教程: Flash教程-Flash游戏实例教程-Flash游戏制作:打砖块 更多...
教程: Flash教程-Flash游戏实例教程-Flash游戏制作:打砖块

  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] 下一页

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
     
     
     

    3DsMAX实例制作:三维玻璃灯泡

    3dmax在线教程--蝴蝶

    3ds max时尚水晶鞋

    精彩Flash制作风吹草动效果动画

    教程: 3DS Max-设计实例-三维虚拟…

    3dmax7.0教程--火焰特效

    绘画技巧:Flash绘制人头造型

    3ds max 室内设计---室内效果图
    免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
    辽ICP备07003958号
    无师自通,伴你一生-教程网