home *** CD-ROM | disk | FTP | other *** search
/ WWW Studio 2004 / WWW Studio.iso / Serwisy / at40 / dane / attach / gra02.swf / scripts / frame_3 / DoAction.as
Encoding:
Text File  |  2004-04-01  |  13.8 KB  |  557 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 = 6;
  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 = 4;
  229.    while(i--)
  230.    {
  231.       var _mc = explode_mc.createEmptyMovieClip(i,i);
  232.       _mc.vx = Math.sin(Math.random() * 6.283185307179586);
  233.       _mc.vy = Math.cos(Math.random() * 6.283185307179586);
  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(0,16777215);
  239.       _mc.moveTo(0,-8);
  240.       _mc.lineTo(0,8);
  241.       _mc.onEnterFrame = explodeMover;
  242.    }
  243.    if(lives > 0)
  244.    {
  245.       newShipTimeout = setInterval(newSpaceship,1500);
  246.    }
  247.    else
  248.    {
  249.       gameOver_mc._visible = true;
  250.       quitGame_mc._visible = false;
  251.       Key.removeListener(keyListener);
  252.       clearInterval(hyperTimeout);
  253.       clearInterval(newShipTimeout);
  254.       clearInterval(newGameTimeout);
  255.       thrust_sound.stop();
  256.       saucerBig_sound.stop();
  257.       saucerSmall_sound.stop();
  258.    }
  259.    sound_mc.gotoAndPlay("bangMedium");
  260. };
  261. explodeMover = function()
  262. {
  263.    if(paused)
  264.    {
  265.       return undefined;
  266.    }
  267.    this._x += this.vx;
  268.    this._y += this.vy;
  269.    this.fuse--;
  270.    if(this.fuse < 0)
  271.    {
  272.       this.removeMovieClip();
  273.    }
  274. };
  275. missileMover = function()
  276. {
  277.    if(paused)
  278.    {
  279.       return undefined;
  280.    }
  281.    this._x += this.vx;
  282.    this._y += this.vy;
  283.    this.wrapPos();
  284.    this.fuse--;
  285.    if(this.fuse == 0)
  286.    {
  287.       this._visible = false;
  288.       delete this.onEnterFrame;
  289.    }
  290. };
  291. saucerMover = function()
  292. {
  293.    if(paused)
  294.    {
  295.       return undefined;
  296.    }
  297.    this._x += this.vx;
  298.    if(Math.random() < 0.02)
  299.    {
  300.       this.vy = (int(Math.random() * 3) - 1) * 2;
  301.    }
  302.    if(this.vy != 0)
  303.    {
  304.       this._y += this.vy;
  305.    }
  306.    this.wrapPos();
  307.    var i = 4;
  308.    while(i--)
  309.    {
  310.       var _mc = _root["missile" + i + "_mc"];
  311.       if(_mc._visible)
  312.       {
  313.          if(_mc.hitTest(this))
  314.          {
  315.             _mc._visible = false;
  316.             explodeSaucer();
  317.             if(this.small)
  318.             {
  319.                score += 1000;
  320.             }
  321.             else
  322.             {
  323.                score += 200;
  324.             }
  325.          }
  326.       }
  327.    }
  328.    var _mc = missile4_mc;
  329.    if(!_mc._visible && Math.random() < 0.1)
  330.    {
  331.       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);
  332.       _mc.fuse = 24;
  333.       _mc.vx = Math.sin(angle) * 8;
  334.       _mc.vy = Math.cos(angle) * -8;
  335.       _mc._x = this._x + _mc.vx;
  336.       _mc._y = this._y + _mc.vy * 2;
  337.       _mc._visible = true;
  338.       _mc.onEnterFrame = missileMover;
  339.       sound_mc.gotoAndPlay("fire");
  340.    }
  341.    if(spaceship_mc.hit_mc.hitTest(this) && !exploded && spaceship_mc._visible)
  342.    {
  343.       exploded = true;
  344.       explodeSpaceship();
  345.    }
  346. };
  347. asteroidMover = function()
  348. {
  349.    if(paused)
  350.    {
  351.       return undefined;
  352.    }
  353.    this._x += this.vx;
  354.    this._y += this.vy;
  355.    this.wrapPos();
  356.    var asteroidHit = false;
  357.    var spaceshipShot = false;
  358.    if(saucer_mc._visible && saucer_mc.hitTest(this))
  359.    {
  360.       asteroidHit = true;
  361.       explodeSaucer();
  362.    }
  363.    if(spaceship_mc.hit_mc.hitTest(this) && !exploded && spaceship_mc._visible)
  364.    {
  365.       exploded = asteroidHit = spaceshipShot = true;
  366.       explodeSpaceship();
  367.    }
  368.    var i = 5;
  369.    while(i--)
  370.    {
  371.       var _mc = _root["missile" + i + "_mc"];
  372.       if(_mc._visible && _mc.hitTest(this))
  373.       {
  374.          _mc._visible = false;
  375.          asteroidHit = true;
  376.          if(i < 4)
  377.          {
  378.             spaceshipShot = true;
  379.          }
  380.          break;
  381.       }
  382.    }
  383.    if(asteroidHit)
  384.    {
  385.       var s = this._xscale = this._yscale /= 2;
  386.       var angle = Math.random() * 6.283185307179586;
  387.       this.vx += Math.sin(angle);
  388.       this.vy += Math.cos(angle);
  389.       asteroidCount--;
  390.       var j = int(s / 25) + 4;
  391.       while(j--)
  392.       {
  393.          var angle = Math.random() * 6.283185307179586;
  394.          var vx = Math.sin(angle) * 2;
  395.          var vy = Math.cos(angle) * 2;
  396.          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});
  397.          explodeNum++;
  398.       }
  399.       if(s < 25)
  400.       {
  401.          this.removeMovieClip();
  402.          sound_mc.gotoAndPlay("bangSmall");
  403.          if(spaceshipShot)
  404.          {
  405.             score += 100;
  406.          }
  407.       }
  408.       else
  409.       {
  410.          if(s == 50)
  411.          {
  412.             sound_mc.gotoAndPlay("bangLarge");
  413.             if(spaceshipShot)
  414.             {
  415.                score += 20;
  416.             }
  417.          }
  418.          else
  419.          {
  420.             sound_mc.gotoAndPlay("bangMedium");
  421.             if(spaceshipShot)
  422.             {
  423.                score += 50;
  424.             }
  425.          }
  426.          this.gotoAndStop(i % 4 + 1);
  427.          var angle = Math.random() * 6.283185307179586;
  428.          makeAsteroid(this._x,this._y,this.vx + Math.sin(angle),this.vy + Math.cos(angle),s);
  429.       }
  430.    }
  431. };
  432. makeAsteroid = function(x, y, vx, vy, s)
  433. {
  434.    asteroidNum++;
  435.    var _mc = asteroids_mc.attachMovie("asteroid",asteroidNum,asteroidNum,{vx:vx,vy:vy,_x:x,_y:y,_xscale:s,_yscale:s,onEnterFrame:asteroidMover});
  436.    _mc.gotoAndStop(asteroidNum % 4 + 1);
  437.    return _mc;
  438. };
  439. hyperspace = function()
  440. {
  441.    if(paused)
  442.    {
  443.       return undefined;
  444.    }
  445.    with(spaceship_mc)
  446.    {
  447.       _visible = true;
  448.       _x = Math.random() * (xMax - _width * 2) + _width;
  449.       _y = Math.random() * (yMax - _height * 2) + _height;
  450.    }
  451.    clearInterval(hyperTimeout);
  452. };
  453. beatSound = function()
  454. {
  455.    if(paused)
  456.    {
  457.       return undefined;
  458.    }
  459.    beatToggle = !beatToggle;
  460.    if(beatToggle)
  461.    {
  462.       beat1_sound.start();
  463.    }
  464.    else
  465.    {
  466.       beat2_sound.start();
  467.    }
  468.    if(gameOver_mc._visible)
  469.    {
  470.       return undefined;
  471.    }
  472.    if(beatCount > 300)
  473.    {
  474.       beatCount -= 10;
  475.       clearInterval(beatTimeout);
  476.       beatTimeout = setInterval(beatSound,beatCount);
  477.    }
  478.    if(beatCount < 700 && !saucer_mc._visible && Math.random() < 0.05)
  479.    {
  480.       if(beatCount < 400 && Math.random() < 0.4)
  481.       {
  482.          saucer_mc._xscale = saucer_mc._yscale = 50;
  483.          saucer_mc.small = true;
  484.          saucerSmall_sound.start(0,100);
  485.       }
  486.       else
  487.       {
  488.          saucer_mc._xscale = saucer_mc._yscale = 100;
  489.          saucer_mc.small = false;
  490.          saucerBig_sound.start(0,100);
  491.       }
  492.       if(Math.random() < 0.5)
  493.       {
  494.          saucer_mc.vx = -2;
  495.          saucer_mc._x = saucer_mc._width / 2 + xMax;
  496.       }
  497.       else
  498.       {
  499.          saucer_mc.vx = 2;
  500.          saucer_mc._x = saucer_mc._width / -2;
  501.       }
  502.       saucer_mc.vy = 0;
  503.       saucer_mc._y = Math.random() * yMax;
  504.       saucer_mc._visible = true;
  505.       saucer_mc.onEnterFrame = saucerMover;
  506.    }
  507.    if(asteroidCount == 0 && !saucer_mc._visible)
  508.    {
  509.       clearInterval(beatTimeout);
  510.       level++;
  511.       newGameTimeout = setInterval(newGame,1000);
  512.    }
  513. };
  514. newSpaceship = function()
  515. {
  516.    spaceship_mc._x = 250;
  517.    spaceship_mc._y = 190;
  518.    spaceship_mc._rotation = 0;
  519.    var asteroidHit = false;
  520.    for(var i in asteroids_mc)
  521.    {
  522.       if(spaceship_mc.hitTest(asteroids_mc[i]))
  523.       {
  524.          asteroidHit = true;
  525.          break;
  526.       }
  527.    }
  528.    if(!asteroidHit)
  529.    {
  530.       spaceship_mc._visible = true;
  531.       exploded = false;
  532.       dx = dy = 0;
  533.       clearInterval(newShipTimeout);
  534.    }
  535. };
  536. newGame = function()
  537. {
  538.    var i = level >= 7 ? 10 : level + 3;
  539.    asteroidCount = i * 7;
  540.    while(i--)
  541.    {
  542.       var angle = Math.random() * 6.283185307179586;
  543.       var _mc = makeAsteroid(Math.random() * xMax,Math.random() * yMax,Math.sin(angle) * 1.5,Math.cos(angle) * 1.5,100);
  544.       if(_mc.hitTest(spaceship_mc) || _mc.hitTest(safeArea_mc))
  545.       {
  546.          i++;
  547.          asteroidNum--;
  548.       }
  549.    }
  550.    beatCount = level >= 7 ? 400 : 1100 - level * 100;
  551.    beatSound();
  552.    Key.addListener(keyListener);
  553.    clearInterval(newGameTimeout);
  554. };
  555. newGameTimeout = setInterval(newGame,1000);
  556. newShipTimeout = setInterval(newSpaceship,1100);
  557.