home *** CD-ROM | disk | FTP | other *** search
/ 600 Games / 600games.iso / Nave / astroys.swf / scripts / frame_4 / DoAction.as
Encoding:
Text File  |  2006-06-13  |  13.9 KB  |  559 lines

  1. stop();
  2. spaceship_mc.gotoAndStop(1);
  3. spaceship_mc._visible = spaceship_mc.hit_mc._visible = safeArea_mc._visible = gameOver_mc._visible = quitGame_mc._visible = missile0_mc._visible = missile1_mc._visible = missile2_mc._visible = missile3_mc._visible = missile4_mc._visible = saucer_mc._visible = false;
  4. dx = dy = explodeNum = asteroidNum = scoreMod = score = 0;
  5. level = 1;
  6. lives = 3;
  7. friction = 0.98;
  8. rads = 0.017453292519943295;
  9. leftKey = rightKey = upKey = fireKey = paused = exploded = beatToggle = false;
  10. asteroids_mc.createEmptyMovieClip("explode_mc",0);
  11. beat1_sound = new Sound(this);
  12. beat1_sound.attachSound("beat1");
  13. beat2_sound = new Sound(this);
  14. beat2_sound.attachSound("beat2");
  15. thrust_sound = new Sound(spaceship_mc);
  16. thrust_sound.attachSound("thrust");
  17. saucerBig_sound = new Sound(saucer_mc);
  18. saucerBig_sound.attachSound("saucerBig");
  19. saucerSmall_sound = new Sound(saucer_mc);
  20. saucerSmall_sound.attachSound("saucerSmall");
  21. setLives = function()
  22. {
  23.    lives_mc[lives].removeMovieClip();
  24.    var i = 0;
  25.    while(i < lives)
  26.    {
  27.       var _mc = lives_mc.attachMovie("spaceship",i,i,{_x:i * 15,_xscale:60,_yscale:60});
  28.       _mc.gotoAndStop(1);
  29.       _mc.hit_mc._visible = false;
  30.       i++;
  31.    }
  32. };
  33. setLives();
  34. keyListener = new Object();
  35. keyListener.onKeyDown = function()
  36. {
  37.    switch(Key.getCode())
  38.    {
  39.       case Key.LEFT:
  40.          leftKey = true;
  41.          break;
  42.       case Key.RIGHT:
  43.          rightKey = true;
  44.          break;
  45.       case Key.UP:
  46.          if(paused)
  47.          {
  48.             return undefined;
  49.          }
  50.          if(!upKey)
  51.          {
  52.             thrust_sound.start(0,1000);
  53.          }
  54.          upKey = true;
  55.          spaceship_mc.play();
  56.          break;
  57.       case Key.SPACE:
  58.          fireKey = true;
  59.          break;
  60.       case 80:
  61.          if(!quitGame_mc._visible)
  62.          {
  63.             paused = !paused;
  64.             pauseSaucer();
  65.          }
  66.          break;
  67.       case 81:
  68.          paused = quitGame_mc._visible = true;
  69.          break;
  70.       case 78:
  71.          if(quitGame_mc._visible)
  72.          {
  73.             paused = quitGame_mc._visible = false;
  74.             pauseSaucer();
  75.          }
  76.          break;
  77.       case 89:
  78.          clearInterval(hyperTimeout);
  79.          clearInterval(newShipTimeout);
  80.          clearInterval(newGameTimeout);
  81.          gotoAndStop(2);
  82.          break;
  83.       case Key.SHIFT:
  84.          if(spaceship_mc._visible && !paused)
  85.          {
  86.             spaceship_mc._visible = false;
  87.             spaceship_mc.gotoAndStop(1);
  88.             leftKey = rightKey = upKey = fireKey = false;
  89.             dx = dy = 0;
  90.             thrust_sound.stop();
  91.             hyperTimeout = setInterval(hyperspace,500);
  92.          }
  93.    }
  94. };
  95. keyListener.onKeyUp = function()
  96. {
  97.    switch(Key.getCode())
  98.    {
  99.       case Key.LEFT:
  100.          leftKey = false;
  101.          break;
  102.       case Key.RIGHT:
  103.          rightKey = false;
  104.          break;
  105.       case Key.UP:
  106.          upKey = false;
  107.          thrust_sound.stop();
  108.          spaceship_mc.gotoAndStop(1);
  109.          break;
  110.       case Key.SPACE:
  111.          fireKey = false;
  112.    }
  113. };
  114. spaceship_mc.onEnterFrame = function()
  115. {
  116.    if(paused || !this._visible)
  117.    {
  118.       return undefined;
  119.    }
  120.    if(leftKey)
  121.    {
  122.       this._rotation -= 10;
  123.    }
  124.    if(rightKey)
  125.    {
  126.       this._rotation += 10;
  127.    }
  128.    var vx = Math.sin(this._rotation * rads);
  129.    var vy = - Math.cos(this._rotation * rads);
  130.    if(upKey)
  131.    {
  132.       dx += vx / 4;
  133.       dy += vy / 4;
  134.    }
  135.    dx *= friction;
  136.    dy *= friction;
  137.    this._x += dx;
  138.    this._y += dy;
  139.    this.wrapPos();
  140.    if(fireKey)
  141.    {
  142.       fireKey = false;
  143.       var i = 4;
  144.       var num = -1;
  145.       while(i--)
  146.       {
  147.          if(!_root["missile" + i + "_mc"]._visible)
  148.          {
  149.             num = i;
  150.             break;
  151.          }
  152.       }
  153.       if(num != -1)
  154.       {
  155.          var _mc = _root["missile" + num + "_mc"];
  156.          _mc.fuse = 24;
  157.          _mc.vx = vx * 10 + dx;
  158.          _mc.vy = vy * 10 + dy;
  159.          _mc._x = this._x + vx * 10;
  160.          _mc._y = this._y + vy * 10;
  161.          _mc._visible = true;
  162.          _mc.onEnterFrame = missileMover;
  163.          sound_mc.gotoAndPlay("fire");
  164.       }
  165.    }
  166.    var s = int(score / 10000);
  167.    if(scoreMod != s)
  168.    {
  169.       scoreMod = s;
  170.       lives++;
  171.       setLives();
  172.       sound_mc.gotoAndPlay("extra");
  173.    }
  174.    if(missile4_mc.hitTest(this.hit_mc) && !exploded && this._visible && missile4_mc._visible)
  175.    {
  176.       missile4_mc._visible = false;
  177.       exploded = true;
  178.       explodeSpaceship();
  179.    }
  180. };
  181. saucer_mc.hideSaucer = function()
  182. {
  183.    saucerBig_sound.stop();
  184.    saucerSmall_sound.stop();
  185.    this._visible = false;
  186.    delete this.onEnterFrame;
  187. };
  188. pauseSaucer = function()
  189. {
  190.    if(saucer_mc._visible)
  191.    {
  192.       if(paused)
  193.       {
  194.          saucerBig_sound.stop();
  195.          saucerSmall_sound.stop();
  196.       }
  197.       else if(saucer_mc.small)
  198.       {
  199.          saucerSmall_sound.start(0,80);
  200.       }
  201.       else
  202.       {
  203.          saucerBig_sound.start(0,80);
  204.       }
  205.    }
  206. };
  207. explodeSaucer = function()
  208. {
  209.    saucer_mc.hideSaucer();
  210.    var i = 12;
  211.    while(i--)
  212.    {
  213.       var angle = Math.random() * 6.283185307179586;
  214.       var vx = Math.sin(angle) * 2;
  215.       var vy = Math.cos(angle) * 2;
  216.       asteroids_mc.explode_mc.attachMovie("explosion",explodeNum,explodeNum,{vx:vx,vy:vy,fuse:Math.ceil(Math.random() * 40),_x:vx * Math.random() * 4 + saucer_mc._x,_y:vy * Math.random() * 4 + saucer_mc._y,onEnterFrame:explodeMover});
  217.       explodeNum++;
  218.    }
  219.    sound_mc.gotoAndPlay("bangMedium");
  220. };
  221. explodeSpaceship = function()
  222. {
  223.    spaceship_mc._visible = false;
  224.    explode_mc._x = spaceship_mc._x;
  225.    explode_mc._y = spaceship_mc._y;
  226.    lives--;
  227.    setLives();
  228.    var i = 40;
  229.    while(i--)
  230.    {
  231.       var _mc = explode_mc.createEmptyMovieClip(i,i);
  232.       _mc.vx = Math.sin(Math.random() * 6.283185307179586) * Math.random() * 5;
  233.       _mc.vy = Math.cos(Math.random() * 6.283185307179586) * Math.random() * 5;
  234.       _mc.fuse = Math.ceil(Math.random() * 30) + 10;
  235.       _mc._x = Math.random() * 12 - 6;
  236.       _mc._y = Math.random() * 12 - 6;
  237.       _mc._rotation = Math.random() * 360;
  238.       _mc.lineStyle(Math.random() * 2,random(16777215));
  239.       var len = Math.random() * 4;
  240.       _mc.moveTo(0,len * -1);
  241.       _mc.lineTo(0,len);
  242.       _mc.onEnterFrame = explodeMover;
  243.    }
  244.    if(lives > 0)
  245.    {
  246.       newShipTimeout = setInterval(newSpaceship,1500);
  247.    }
  248.    else
  249.    {
  250.       gameOver_mc.gotoAndPlay(2);
  251.       gameOver_mc._visible = true;
  252.       quitGame_mc._visible = false;
  253.       Key.removeListener(keyListener);
  254.       clearInterval(hyperTimeout);
  255.       clearInterval(newShipTimeout);
  256.       clearInterval(newGameTimeout);
  257.       thrust_sound.stop();
  258.       saucerBig_sound.stop();
  259.       saucerSmall_sound.stop();
  260.    }
  261.    sound_mc.gotoAndPlay("bangMedium");
  262. };
  263. explodeMover = function()
  264. {
  265.    if(paused)
  266.    {
  267.       return undefined;
  268.    }
  269.    this._x += this.vx;
  270.    this._y += this.vy;
  271.    this.fuse--;
  272.    if(this.fuse < 0)
  273.    {
  274.       this.removeMovieClip();
  275.    }
  276. };
  277. missileMover = function()
  278. {
  279.    if(paused)
  280.    {
  281.       return undefined;
  282.    }
  283.    this._x += this.vx;
  284.    this._y += this.vy;
  285.    this.wrapPos();
  286.    this.fuse--;
  287.    if(this.fuse == 0)
  288.    {
  289.       this._visible = false;
  290.       delete this.onEnterFrame;
  291.    }
  292. };
  293. saucerMover = function()
  294. {
  295.    if(paused)
  296.    {
  297.       return undefined;
  298.    }
  299.    this._x += this.vx;
  300.    if(Math.random() < 0.02)
  301.    {
  302.       this.vy = (int(Math.random() * 3) - 1) * 2;
  303.    }
  304.    if(this.vy != 0)
  305.    {
  306.       this._y += this.vy;
  307.    }
  308.    this.wrapPos();
  309.    var i = 4;
  310.    while(i--)
  311.    {
  312.       var _mc = _root["missile" + i + "_mc"];
  313.       if(_mc._visible)
  314.       {
  315.          if(_mc.hitTest(this))
  316.          {
  317.             _mc._visible = false;
  318.             explodeSaucer();
  319.             if(this.small)
  320.             {
  321.                score += 1000;
  322.             }
  323.             else
  324.             {
  325.                score += 200;
  326.             }
  327.          }
  328.       }
  329.    }
  330.    var _mc = missile4_mc;
  331.    if(!_mc._visible && Math.random() < 0.1)
  332.    {
  333.       var angle = !(this.small && spaceship_mc._visible) ? Math.random() * 6.283185307179586 : Math.atan2(spaceship_mc._x - this._x + Math.random() * 64 - 32,this._y - spaceship_mc._y + Math.random() * 64 - 32);
  334.       _mc.fuse = 24;
  335.       _mc.vx = Math.sin(angle) * 8;
  336.       _mc.vy = Math.cos(angle) * -8;
  337.       _mc._x = this._x + _mc.vx;
  338.       _mc._y = this._y + _mc.vy * 2;
  339.       _mc._visible = true;
  340.       _mc.onEnterFrame = missileMover;
  341.       sound_mc.gotoAndPlay("fire");
  342.    }
  343.    if(spaceship_mc.hit_mc.hitTest(this) && !exploded && spaceship_mc._visible)
  344.    {
  345.       exploded = true;
  346.       explodeSpaceship();
  347.    }
  348. };
  349. asteroidMover = function()
  350. {
  351.    if(paused)
  352.    {
  353.       return undefined;
  354.    }
  355.    this._x += this.vx;
  356.    this._y += this.vy;
  357.    this.wrapPos();
  358.    var asteroidHit = false;
  359.    var spaceshipShot = false;
  360.    if(saucer_mc._visible && saucer_mc.hitTest(this))
  361.    {
  362.       asteroidHit = true;
  363.       explodeSaucer();
  364.    }
  365.    if(spaceship_mc.hit_mc.hitTest(this) && !exploded && spaceship_mc._visible)
  366.    {
  367.       exploded = asteroidHit = spaceshipShot = true;
  368.       explodeSpaceship();
  369.    }
  370.    var i = 5;
  371.    while(i--)
  372.    {
  373.       var _mc = _root["missile" + i + "_mc"];
  374.       if(_mc._visible && _mc.hitTest(this))
  375.       {
  376.          _mc._visible = false;
  377.          asteroidHit = true;
  378.          if(i < 4)
  379.          {
  380.             spaceshipShot = true;
  381.          }
  382.          break;
  383.       }
  384.    }
  385.    if(asteroidHit)
  386.    {
  387.       var s = this._xscale = this._yscale /= 2;
  388.       var angle = Math.random() * 6.283185307179586;
  389.       this.vx += Math.sin(angle);
  390.       this.vy += Math.cos(angle);
  391.       asteroidCount--;
  392.       var j = int(s / 25) + 4;
  393.       while(j--)
  394.       {
  395.          var angle = Math.random() * 6.283185307179586;
  396.          var vx = Math.sin(angle) * 2;
  397.          var vy = Math.cos(angle) * 2;
  398.          asteroids_mc.explode_mc.attachMovie("explosion",explodeNum,explodeNum,{vx:vx,vy:vy,fuse:Math.ceil(Math.random() * s),_x:vx * Math.random() * 4 + this._x,_y:vy * Math.random() * 4 + this._y,onEnterFrame:explodeMover});
  399.          explodeNum++;
  400.       }
  401.       if(s < 25)
  402.       {
  403.          this.removeMovieClip();
  404.          sound_mc.gotoAndPlay("bangSmall");
  405.          if(spaceshipShot)
  406.          {
  407.             score += 100;
  408.          }
  409.       }
  410.       else
  411.       {
  412.          if(s == 50)
  413.          {
  414.             sound_mc.gotoAndPlay("bangLarge");
  415.             if(spaceshipShot)
  416.             {
  417.                score += 20;
  418.             }
  419.          }
  420.          else
  421.          {
  422.             sound_mc.gotoAndPlay("bangMedium");
  423.             if(spaceshipShot)
  424.             {
  425.                score += 50;
  426.             }
  427.          }
  428.          this.gotoAndStop(i % 4 + 1);
  429.          var angle = Math.random() * 6.283185307179586;
  430.          makeAsteroid(this._x,this._y,this.vx + Math.sin(angle),this.vy + Math.cos(angle),s);
  431.       }
  432.    }
  433. };
  434. makeAsteroid = function(x, y, vx, vy, s)
  435. {
  436.    asteroidNum++;
  437.    var _mc = asteroids_mc.attachMovie("asteroid",asteroidNum,asteroidNum,{vx:vx,vy:vy,_x:x,_y:y,_xscale:s,_yscale:s,onEnterFrame:asteroidMover});
  438.    _mc.gotoAndStop(asteroidNum % 4 + 1);
  439.    return _mc;
  440. };
  441. hyperspace = function()
  442. {
  443.    if(paused)
  444.    {
  445.       return undefined;
  446.    }
  447.    with(spaceship_mc)
  448.    {
  449.       _visible = true;
  450.       _x = Math.random() * (xMax - _width * 2) + _width;
  451.       _y = Math.random() * (yMax - _height * 2) + _height;
  452.    }
  453.    clearInterval(hyperTimeout);
  454. };
  455. beatSound = function()
  456. {
  457.    if(paused)
  458.    {
  459.       return undefined;
  460.    }
  461.    beatToggle = !beatToggle;
  462.    if(beatToggle)
  463.    {
  464.       beat1_sound.start();
  465.    }
  466.    else
  467.    {
  468.       beat2_sound.start();
  469.    }
  470.    if(gameOver_mc._visible)
  471.    {
  472.       return undefined;
  473.    }
  474.    if(beatCount > 300)
  475.    {
  476.       beatCount -= 10;
  477.       clearInterval(beatTimeout);
  478.       beatTimeout = setInterval(beatSound,beatCount);
  479.    }
  480.    if(beatCount < 700 && !saucer_mc._visible && Math.random() < 0.05)
  481.    {
  482.       if(beatCount < 400 && Math.random() < 0.4)
  483.       {
  484.          saucer_mc._xscale = saucer_mc._yscale = 50;
  485.          saucer_mc.small = true;
  486.          saucerSmall_sound.start(0,100);
  487.       }
  488.       else
  489.       {
  490.          saucer_mc._xscale = saucer_mc._yscale = 100;
  491.          saucer_mc.small = false;
  492.          saucerBig_sound.start(0,100);
  493.       }
  494.       if(Math.random() < 0.5)
  495.       {
  496.          saucer_mc.vx = -2;
  497.          saucer_mc._x = saucer_mc._width / 2 + xMax;
  498.       }
  499.       else
  500.       {
  501.          saucer_mc.vx = 2;
  502.          saucer_mc._x = saucer_mc._width / -2;
  503.       }
  504.       saucer_mc.vy = 0;
  505.       saucer_mc._y = Math.random() * yMax;
  506.       saucer_mc._visible = true;
  507.       saucer_mc.onEnterFrame = saucerMover;
  508.    }
  509.    if(asteroidCount == 0 && !saucer_mc._visible)
  510.    {
  511.       clearInterval(beatTimeout);
  512.       level++;
  513.       newGameTimeout = setInterval(newGame,1000);
  514.    }
  515. };
  516. newSpaceship = function()
  517. {
  518.    spaceship_mc._x = 250;
  519.    spaceship_mc._y = 190;
  520.    spaceship_mc._rotation = 0;
  521.    var asteroidHit = false;
  522.    for(var i in asteroids_mc)
  523.    {
  524.       if(spaceship_mc.hitTest(asteroids_mc[i]))
  525.       {
  526.          asteroidHit = true;
  527.          break;
  528.       }
  529.    }
  530.    if(!asteroidHit)
  531.    {
  532.       spaceship_mc._visible = true;
  533.       exploded = false;
  534.       dx = dy = 0;
  535.       clearInterval(newShipTimeout);
  536.    }
  537. };
  538. newGame = function()
  539. {
  540.    var i = level >= 7 ? 10 : level + 3;
  541.    asteroidCount = i * 7;
  542.    while(i--)
  543.    {
  544.       var angle = Math.random() * 6.283185307179586;
  545.       var _mc = makeAsteroid(Math.random() * xMax,Math.random() * yMax,Math.sin(angle) * 1.5,Math.cos(angle) * 1.5,100);
  546.       if(_mc.hitTest(spaceship_mc) || _mc.hitTest(safeArea_mc))
  547.       {
  548.          i++;
  549.          asteroidNum--;
  550.       }
  551.    }
  552.    beatCount = level >= 7 ? 400 : 1100 - level * 100;
  553.    beatSound();
  554.    Key.addListener(keyListener);
  555.    clearInterval(newGameTimeout);
  556. };
  557. newGameTimeout = setInterval(newGame,1000);
  558. newShipTimeout = setInterval(newSpaceship,1100);
  559.