home *** CD-ROM | disk | FTP | other *** search
- stop();
- spaceship_mc.gotoAndStop(1);
- 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;
- dx = dy = explodeNum = asteroidNum = scoreMod = score = 0;
- level = 1;
- lives = 3;
- friction = 0.98;
- rads = 0.017453292519943295;
- leftKey = rightKey = upKey = fireKey = paused = exploded = beatToggle = false;
- asteroids_mc.createEmptyMovieClip("explode_mc",0);
- beat1_sound = new Sound(this);
- beat1_sound.attachSound("beat1");
- beat2_sound = new Sound(this);
- beat2_sound.attachSound("beat2");
- thrust_sound = new Sound(spaceship_mc);
- thrust_sound.attachSound("thrust");
- saucerBig_sound = new Sound(saucer_mc);
- saucerBig_sound.attachSound("saucerBig");
- saucerSmall_sound = new Sound(saucer_mc);
- saucerSmall_sound.attachSound("saucerSmall");
- setLives = function()
- {
- lives_mc[lives].removeMovieClip();
- var i = 0;
- while(i < lives)
- {
- var _mc = lives_mc.attachMovie("spaceship",i,i,{_x:i * 15,_xscale:60,_yscale:60});
- _mc.gotoAndStop(1);
- _mc.hit_mc._visible = false;
- i++;
- }
- };
- setLives();
- keyListener = new Object();
- keyListener.onKeyDown = function()
- {
- switch(Key.getCode())
- {
- case Key.LEFT:
- leftKey = true;
- break;
- case Key.RIGHT:
- rightKey = true;
- break;
- case Key.UP:
- if(paused)
- {
- return undefined;
- }
- if(!upKey)
- {
- thrust_sound.start(0,1000);
- }
- upKey = true;
- spaceship_mc.play();
- break;
- case Key.SPACE:
- fireKey = true;
- break;
- case 80:
- if(!quitGame_mc._visible)
- {
- paused = !paused;
- pauseSaucer();
- }
- break;
- case 81:
- paused = quitGame_mc._visible = true;
- break;
- case 78:
- if(quitGame_mc._visible)
- {
- paused = quitGame_mc._visible = false;
- pauseSaucer();
- }
- break;
- case 89:
- clearInterval(hyperTimeout);
- clearInterval(newShipTimeout);
- clearInterval(newGameTimeout);
- gotoAndStop(2);
- break;
- case Key.SHIFT:
- if(spaceship_mc._visible && !paused)
- {
- spaceship_mc._visible = false;
- spaceship_mc.gotoAndStop(1);
- leftKey = rightKey = upKey = fireKey = false;
- dx = dy = 0;
- thrust_sound.stop();
- hyperTimeout = setInterval(hyperspace,500);
- }
- }
- };
- keyListener.onKeyUp = function()
- {
- switch(Key.getCode())
- {
- case Key.LEFT:
- leftKey = false;
- break;
- case Key.RIGHT:
- rightKey = false;
- break;
- case Key.UP:
- upKey = false;
- thrust_sound.stop();
- spaceship_mc.gotoAndStop(1);
- break;
- case Key.SPACE:
- fireKey = false;
- }
- };
- spaceship_mc.onEnterFrame = function()
- {
- if(paused || !this._visible)
- {
- return undefined;
- }
- if(leftKey)
- {
- this._rotation -= 10;
- }
- if(rightKey)
- {
- this._rotation += 10;
- }
- var vx = Math.sin(this._rotation * rads);
- var vy = - Math.cos(this._rotation * rads);
- if(upKey)
- {
- dx += vx / 4;
- dy += vy / 4;
- }
- dx *= friction;
- dy *= friction;
- this._x += dx;
- this._y += dy;
- this.wrapPos();
- if(fireKey)
- {
- fireKey = false;
- var i = 4;
- var num = -1;
- while(i--)
- {
- if(!_root["missile" + i + "_mc"]._visible)
- {
- num = i;
- break;
- }
- }
- if(num != -1)
- {
- var _mc = _root["missile" + num + "_mc"];
- _mc.fuse = 24;
- _mc.vx = vx * 10 + dx;
- _mc.vy = vy * 10 + dy;
- _mc._x = this._x + vx * 10;
- _mc._y = this._y + vy * 10;
- _mc._visible = true;
- _mc.onEnterFrame = missileMover;
- sound_mc.gotoAndPlay("fire");
- }
- }
- var s = int(score / 10000);
- if(scoreMod != s)
- {
- scoreMod = s;
- lives++;
- setLives();
- sound_mc.gotoAndPlay("extra");
- }
- if(missile4_mc.hitTest(this.hit_mc) && !exploded && this._visible && missile4_mc._visible)
- {
- missile4_mc._visible = false;
- exploded = true;
- explodeSpaceship();
- }
- };
- saucer_mc.hideSaucer = function()
- {
- saucerBig_sound.stop();
- saucerSmall_sound.stop();
- this._visible = false;
- delete this.onEnterFrame;
- };
- pauseSaucer = function()
- {
- if(saucer_mc._visible)
- {
- if(paused)
- {
- saucerBig_sound.stop();
- saucerSmall_sound.stop();
- }
- else if(saucer_mc.small)
- {
- saucerSmall_sound.start(0,80);
- }
- else
- {
- saucerBig_sound.start(0,80);
- }
- }
- };
- explodeSaucer = function()
- {
- saucer_mc.hideSaucer();
- var i = 12;
- while(i--)
- {
- var angle = Math.random() * 6.283185307179586;
- var vx = Math.sin(angle) * 2;
- var vy = Math.cos(angle) * 2;
- 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});
- explodeNum++;
- }
- sound_mc.gotoAndPlay("bangMedium");
- };
- explodeSpaceship = function()
- {
- spaceship_mc._visible = false;
- explode_mc._x = spaceship_mc._x;
- explode_mc._y = spaceship_mc._y;
- lives--;
- setLives();
- var i = 40;
- while(i--)
- {
- var _mc = explode_mc.createEmptyMovieClip(i,i);
- _mc.vx = Math.sin(Math.random() * 6.283185307179586) * Math.random() * 5;
- _mc.vy = Math.cos(Math.random() * 6.283185307179586) * Math.random() * 5;
- _mc.fuse = Math.ceil(Math.random() * 30) + 10;
- _mc._x = Math.random() * 12 - 6;
- _mc._y = Math.random() * 12 - 6;
- _mc._rotation = Math.random() * 360;
- _mc.lineStyle(Math.random() * 2,random(16777215));
- var len = Math.random() * 4;
- _mc.moveTo(0,len * -1);
- _mc.lineTo(0,len);
- _mc.onEnterFrame = explodeMover;
- }
- if(lives > 0)
- {
- newShipTimeout = setInterval(newSpaceship,1500);
- }
- else
- {
- gameOver_mc.gotoAndPlay(2);
- gameOver_mc._visible = true;
- quitGame_mc._visible = false;
- Key.removeListener(keyListener);
- clearInterval(hyperTimeout);
- clearInterval(newShipTimeout);
- clearInterval(newGameTimeout);
- thrust_sound.stop();
- saucerBig_sound.stop();
- saucerSmall_sound.stop();
- }
- sound_mc.gotoAndPlay("bangMedium");
- };
- explodeMover = function()
- {
- if(paused)
- {
- return undefined;
- }
- this._x += this.vx;
- this._y += this.vy;
- this.fuse--;
- if(this.fuse < 0)
- {
- this.removeMovieClip();
- }
- };
- missileMover = function()
- {
- if(paused)
- {
- return undefined;
- }
- this._x += this.vx;
- this._y += this.vy;
- this.wrapPos();
- this.fuse--;
- if(this.fuse == 0)
- {
- this._visible = false;
- delete this.onEnterFrame;
- }
- };
- saucerMover = function()
- {
- if(paused)
- {
- return undefined;
- }
- this._x += this.vx;
- if(Math.random() < 0.02)
- {
- this.vy = (int(Math.random() * 3) - 1) * 2;
- }
- if(this.vy != 0)
- {
- this._y += this.vy;
- }
- this.wrapPos();
- var i = 4;
- while(i--)
- {
- var _mc = _root["missile" + i + "_mc"];
- if(_mc._visible)
- {
- if(_mc.hitTest(this))
- {
- _mc._visible = false;
- explodeSaucer();
- if(this.small)
- {
- score += 1000;
- }
- else
- {
- score += 200;
- }
- }
- }
- }
- var _mc = missile4_mc;
- if(!_mc._visible && Math.random() < 0.1)
- {
- 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);
- _mc.fuse = 24;
- _mc.vx = Math.sin(angle) * 8;
- _mc.vy = Math.cos(angle) * -8;
- _mc._x = this._x + _mc.vx;
- _mc._y = this._y + _mc.vy * 2;
- _mc._visible = true;
- _mc.onEnterFrame = missileMover;
- sound_mc.gotoAndPlay("fire");
- }
- if(spaceship_mc.hit_mc.hitTest(this) && !exploded && spaceship_mc._visible)
- {
- exploded = true;
- explodeSpaceship();
- }
- };
- asteroidMover = function()
- {
- if(paused)
- {
- return undefined;
- }
- this._x += this.vx;
- this._y += this.vy;
- this.wrapPos();
- var asteroidHit = false;
- var spaceshipShot = false;
- if(saucer_mc._visible && saucer_mc.hitTest(this))
- {
- asteroidHit = true;
- explodeSaucer();
- }
- if(spaceship_mc.hit_mc.hitTest(this) && !exploded && spaceship_mc._visible)
- {
- exploded = asteroidHit = spaceshipShot = true;
- explodeSpaceship();
- }
- var i = 5;
- while(i--)
- {
- var _mc = _root["missile" + i + "_mc"];
- if(_mc._visible && _mc.hitTest(this))
- {
- _mc._visible = false;
- asteroidHit = true;
- if(i < 4)
- {
- spaceshipShot = true;
- }
- break;
- }
- }
- if(asteroidHit)
- {
- var s = this._xscale = this._yscale /= 2;
- var angle = Math.random() * 6.283185307179586;
- this.vx += Math.sin(angle);
- this.vy += Math.cos(angle);
- asteroidCount--;
- var j = int(s / 25) + 4;
- while(j--)
- {
- var angle = Math.random() * 6.283185307179586;
- var vx = Math.sin(angle) * 2;
- var vy = Math.cos(angle) * 2;
- 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});
- explodeNum++;
- }
- if(s < 25)
- {
- this.removeMovieClip();
- sound_mc.gotoAndPlay("bangSmall");
- if(spaceshipShot)
- {
- score += 100;
- }
- }
- else
- {
- if(s == 50)
- {
- sound_mc.gotoAndPlay("bangLarge");
- if(spaceshipShot)
- {
- score += 20;
- }
- }
- else
- {
- sound_mc.gotoAndPlay("bangMedium");
- if(spaceshipShot)
- {
- score += 50;
- }
- }
- this.gotoAndStop(i % 4 + 1);
- var angle = Math.random() * 6.283185307179586;
- makeAsteroid(this._x,this._y,this.vx + Math.sin(angle),this.vy + Math.cos(angle),s);
- }
- }
- };
- makeAsteroid = function(x, y, vx, vy, s)
- {
- asteroidNum++;
- var _mc = asteroids_mc.attachMovie("asteroid",asteroidNum,asteroidNum,{vx:vx,vy:vy,_x:x,_y:y,_xscale:s,_yscale:s,onEnterFrame:asteroidMover});
- _mc.gotoAndStop(asteroidNum % 4 + 1);
- return _mc;
- };
- hyperspace = function()
- {
- if(paused)
- {
- return undefined;
- }
- with(spaceship_mc)
- {
- _visible = true;
- _x = Math.random() * (xMax - _width * 2) + _width;
- _y = Math.random() * (yMax - _height * 2) + _height;
- }
- clearInterval(hyperTimeout);
- };
- beatSound = function()
- {
- if(paused)
- {
- return undefined;
- }
- beatToggle = !beatToggle;
- if(beatToggle)
- {
- beat1_sound.start();
- }
- else
- {
- beat2_sound.start();
- }
- if(gameOver_mc._visible)
- {
- return undefined;
- }
- if(beatCount > 300)
- {
- beatCount -= 10;
- clearInterval(beatTimeout);
- beatTimeout = setInterval(beatSound,beatCount);
- }
- if(beatCount < 700 && !saucer_mc._visible && Math.random() < 0.05)
- {
- if(beatCount < 400 && Math.random() < 0.4)
- {
- saucer_mc._xscale = saucer_mc._yscale = 50;
- saucer_mc.small = true;
- saucerSmall_sound.start(0,100);
- }
- else
- {
- saucer_mc._xscale = saucer_mc._yscale = 100;
- saucer_mc.small = false;
- saucerBig_sound.start(0,100);
- }
- if(Math.random() < 0.5)
- {
- saucer_mc.vx = -2;
- saucer_mc._x = saucer_mc._width / 2 + xMax;
- }
- else
- {
- saucer_mc.vx = 2;
- saucer_mc._x = saucer_mc._width / -2;
- }
- saucer_mc.vy = 0;
- saucer_mc._y = Math.random() * yMax;
- saucer_mc._visible = true;
- saucer_mc.onEnterFrame = saucerMover;
- }
- if(asteroidCount == 0 && !saucer_mc._visible)
- {
- clearInterval(beatTimeout);
- level++;
- newGameTimeout = setInterval(newGame,1000);
- }
- };
- newSpaceship = function()
- {
- spaceship_mc._x = 250;
- spaceship_mc._y = 190;
- spaceship_mc._rotation = 0;
- var asteroidHit = false;
- for(var i in asteroids_mc)
- {
- if(spaceship_mc.hitTest(asteroids_mc[i]))
- {
- asteroidHit = true;
- break;
- }
- }
- if(!asteroidHit)
- {
- spaceship_mc._visible = true;
- exploded = false;
- dx = dy = 0;
- clearInterval(newShipTimeout);
- }
- };
- newGame = function()
- {
- var i = level >= 7 ? 10 : level + 3;
- asteroidCount = i * 7;
- while(i--)
- {
- var angle = Math.random() * 6.283185307179586;
- var _mc = makeAsteroid(Math.random() * xMax,Math.random() * yMax,Math.sin(angle) * 1.5,Math.cos(angle) * 1.5,100);
- if(_mc.hitTest(spaceship_mc) || _mc.hitTest(safeArea_mc))
- {
- i++;
- asteroidNum--;
- }
- }
- beatCount = level >= 7 ? 400 : 1100 - level * 100;
- beatSound();
- Key.addListener(keyListener);
- clearInterval(newGameTimeout);
- };
- newGameTimeout = setInterval(newGame,1000);
- newShipTimeout = setInterval(newSpaceship,1100);
-