SpaceInvader

previous code

1
// set up the game variables
 var level : int = 1; // the first level, will hold level value
 var lives :int = 4; //initial lives, then reports the lives remaining
 
 stop();
 
 btnStart.addEventListener(MouseEvent.CLICK, startGame);
 function startGame(evt:MouseEvent):void{
 btnStart.removeEventListener(MouseEvent.CLICK, startGame);
 gotoAndPlay("start"); //gotoAndPlay(2);
 }
 
2
     import flash.utils.Timer;
     import flash.events.KeyboardEvent;
     import flash.events.TimerEvent;
     import flash.events.Event;
     import flash.media.SoundChannel;
     import fl.motion.Animator;

      stop();
      stage.focus = this;

      var shipSpeed :Number = 7;
      var enemyNumInARow : Number = 10;	//enemyNum
      var enemySpace :Number = 40;
      var yIncrement : Number = 100;
      var bulletSpeed : Number = 15;
      var alienSpeed :Number = 20;
      var gunshipSpeed : Number = 5;
      var counter : int =0;
      var enemyNumOfRows : int = 3 ;
      var soundChannel : SoundChannel;
      var alienArray : Array = new Array(); 
      var trackerArray :Array = new Array(); 
      var bulletArray :Array = new Array(); 
      var timerVal :Number = 300;
      var score : Number = 0;
      var enemyTimer : Timer = new Timer(300);
      var spaceshipTimer : Timer = new Timer(10000);
      var spaceshipFlying : Boolean = false;
      var alienSpaceship : AlienSpaceship  = new AlienSpaceship();
      var mcBullet :Bullet = new Bullet();
      var anim :AlienHitAnimation;
      var animArray :Array = new Array();
      var i : int = 0;
      var j : int = 0;
 
 
3
 setLevel();
 function createGun(){
var mcGunship :Gunship = new Gunship();
addChild(mcGunship);
mcGunship.x =275;
mcGunship.y =485;
mcGunship.name ="mcGunship";
lives--;
}

function setLevel(){
//reset the values 
createGun();
alienArray = new Array();
trackerArray = new Array();
bulletArray = new Array();
enemyTimer = new Timer(timerVal);
spaceshipTimer = new Timer(10000);
alienSpaceship = new AlienSpaceship();
mcBullet = new Bullet();

counter = 0;
tMessage.text = "";
tLevel.text = level.toString();
tScore.text = score.toString();
tLives.text = lives.toString();

btnFinish.visible = false;

//btnNextLevel.removeEventListener(MouseEvent.CLICK, restartGame);
btnNextLevel.visible = false;
btnNextLevel.enabled = false;

//btnTryAgain.removeEventListener(MouseEvent.CLICK, restartGame);
btnTryAgain.visible = false;
btnTryAgain.enabled = false;

mcLives.alpha = 1
if(lives>0){
mcLives.gotoAndStop(lives);
} else if (lives == 0){
mcLives.alpha = 0;
}

//to place aliens on stage
if(level <=5){
enemyNumOfRows = 3 + level;
} else {
enemyNumOfRows = 8;	//no more rows added. too narrow for shooting
alienSpeed = 20; //incease speed at higher levels 
}
 var a:int = 60;	//offset from left
var b:int = 60; //top margin
 for(i = 0; i < enemyNumOfRows; i++){
for (j= 0; j <enemyNumInARow; j++){
var alien :Alien = new Alien();
alien.x = a + j * 40;
alien.y = b + i * 40;
alien.name = "alien " + (i+1).toString() + " " +(j+1).toString();
alienArray.push(alien);
addChild(alien);
} //eof j loop
}	//eof i loop
 for(i = 0; i < enemyNumInARow; i++){
var tracker : Alien = new Alien();
tracker.visible = true; //false;
tracker.alpha = 0.1;
addChild(tracker);
tracker.x = i * enemySpace + a;
tracker.y = 30; 
tracker.name = "tracker" + i;
trackerArray[i] = tracker;
}
spaceshipTimer = new Timer(10000);
spaceshipTimer.start();
spaceshipTimer.addEventListener(TimerEvent.TIMER, createSpaceship);
alienSpaceship = new AlienSpaceship();

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
enemyTimer = new Timer(200);
enemyTimer.start();
enemyTimer.addEventListener(TimerEvent.TIMER, alienMoveRight);
addEventListener(Event.ENTER_FRAME, moveBullets);
trace ("setLevel() has completed");
} //eof setLevel()
 function createSpaceship(evt:TimerEvent){
if (spaceshipFlying == false){
addChild(alienSpaceship);
spaceshipFlying = true;
alienSpaceship.x = -50
alienSpaceship.y = 20;
alienSpaceship.scaleX = alienSpaceship.scaleY = 0.15;
alienSpaceship.addEventListener(Event.ENTER_FRAME, moveSpaceship);
trace("alienSpaceship is created");
} 
} //eof createSpaceship()
 function moveSpaceship(evt:Event){
if(alienSpaceship.x >= stage.stageWidth ){ //stage.width indicate the stage width which could expand?
spaceshipFlying = false;
alienSpaceship.removeEventListener(Event.ENTER_FRAME, moveSpaceship);
alienSpaceship.parent.removeChild(alienSpaceship);
} else {
alienSpaceship.x += 5;
}
trace("alienSpaceship is moving");
} //eof moveSpaceship()
 function keyDownHandler(evt:KeyboardEvent){
if(evt.keyCode ==37){
mcGunship.addEventListener(Event.ENTER_FRAME, moveGunLeft);
} else if (evt.keyCode == 39){
mcGunship.addEventListener(Event.ENTER_FRAME, moveGunRight);
}
if(evt.keyCode == 32) {
mcBullet = new Bullet();
mcBullet.scaleX = mcBullet.scaley = 0.5; 
addChild(mcBullet);
mcBullet.x = mcGunship.x;
mcBullet.y = mcGunship.y;
//mcBullet.addEventListener(Event.ENTER_FRAME, flyBullet);
bulletArray.push(mcBullet);
playFiringSound();

}
trace("keyDonwHandler is called");
} //eof keyDownHandler()
 function keyUpHandler(evt : KeyboardEvent){
if(evt.keyCode == 37){
mcGunship.removeEventListener(Event.ENTER_FRAME, moveGunLeft);
} else if(evt.keyCode == 39){
mcGunship.removeEventListener(Event.ENTER_FRAME, moveGunRight);
}
if (evt.keyCode == 32){

}
trace("keyUpHandler is called");
} //eof keyUpHandler()
 function moveGunLeft(evt: Event){
if(mcGunship.x >= 20){
mcGunship.x -= 10;
} else {
mcGunship.x = 20;
}
trace("moveGunLeft() is called");
} //eof moveGunLeft()
 function moveGunRight(evt: Event){
if (mcGunship.x <= 530){ 
mcGunship.x += 10;
} else {
mcGunship.x = 530;
}
trace("moveGunRight() is called");
} //eof moveGunRight()
 function addAnim(xPos:Number, yPos:Number){
var anim: AlienHitAnimation;
anim = new AlienHitAnimation();
addChild(anim);
anim.gotoAndPlay(1);
anim.x = xPos;
anim.y = yPos;
anim.name = "anim";
animArray.push(anim);
var animTimer : Timer = new Timer(100);
animTimer.start();
animTimer.addEventListener(TimerEvent.TIMER_COMPLETE, removeAnim);
trace("addAnim completed.");
} //eof addAnimation()

function moveBullets(evt:Event){
if(bulletArray.length >0){
for(j =0; j <bulletArray.length; j++){
if (bulletArray[j].y <= -10){
//mcBullet.removeEventListener(Event.ENTER_FRAME, flyBullet);
bulletArray[j].parent.removeChild(bulletArray[j]);
bulletArray.splice(j,1);
} else {
bulletArray[j].y -= bulletSpeed;
}
if(spaceshipFlying == true){
if (bulletArray[j].hitTestObject(alienSpaceship)){
score += 100;
tScore.text = score.toString();
playExplosionSound();
bulletArray[j].parent.removeChild(bulletArray[j]);
bulletArray.splice(j,1);
alienSpaceship.removeEventListener(Event.ENTER_FRAME, moveSpaceship);
alienSpaceship.parent.removeChild(alienSpaceship);
spaceshipFlying = false;
alienSpaceship.x =-40;
}
}
for (i = 0 ; i <alienArray.length; i++){
if (bulletArray[j].hitTestObject(alienArray[i])){
score +=10;
tScore.text = score.toString();
playHitSound();
addAnim(alienArray[i].x, alienArray[i].y );
trace("addAnim called.");
bulletArray[j].parent.removeChild(bulletArray[j]);
bulletArray.splice(j,1);
alienArray[i].parent.removeChild(alienArray[i]);
alienArray.splice(i,1);
trace("alienArray spliced.");
if(alienArray.length == 0) {
clearAll();
//endGame();
tMessage.text = "LEVEL " + level + " COMPLETE!";
level ++;
btnNextLevel.visible = true;
btnNextLevel.enabled = true;
btnNextLevel.addEventListener(MouseEvent.CLICK, restartGame);
break;
}
}
}
}
}
//	trace("moveBullets() is called");
} //eof flyBullet()
 function restartGame(evt:Event){
if(lives == -1){
gotoAndStop(3);
} else {
setLevel();
}
trace("restartGame() is called");
} //eof restartGame()
 function alienMoveRight(evt: TimerEvent ){
if(alienArray.length == 0){
endGame();
}
for(i = 0; i < enemyNumInARow; i++){
trackerArray[i].x += alienSpeed;
}
for(i = 0; i <alienArray.length; i++){
alienArray[i].x += alienSpeed;
if(mcBottomLine.hitTestObject(alienArray[i]) || alienArray[i].y >=480){
endGame();
break;
}
//	trace("trackerArray[0].x " + trackerArray[0].x);
//	trace("trackerArray[9].x " + trackerArray[9].x);

if(trackerArray[9].x >= (stage.width -10)) {
alienArray[i].y += yIncrement;
enemyTimer.removeEventListener(TimerEvent.TIMER, alienMoveRight);
enemyTimer.addEventListener(TimerEvent.TIMER, alienMoveLeft);
enemyTimer.start();
}
}

} //eof alienMoveRight()
 function alienMoveLeft(evt: TimerEvent){
if(alienArray.length == 0){
endGame();
}
for(i= 0; i < enemyNumInARow; i++){
trackerArray[i].x -= alienSpeed;
}
for(i = 0; i <alienArray.length; i++){
alienArray[i]. x -= alienSpeed;

if(mcBottomLine.hitTestObject(alienArray[i]) || alienArray[i].y >=480){
endGame();
break;
}
//	trace("trackerArray[0].x " + trackerArray[0].x);
//	trace("trackerArray[9].x " + trackerArray[9].x);
if(trackerArray[0].x <= 10) {
alienArray[i].y += yIncrement;
enemyTimer.removeEventListener(TimerEvent.TIMER, alienMoveLeft);
enemyTimer.addEventListener(TimerEvent.TIMER, alienMoveRight);
} 
}
} //eof alienMoveLeft()

function endGame(){
clearAll();
trace("calearAll() is called.");
tMessage.text = "SORRY!";
lives --;
if(lives>0) {
btnTryAgain.enabled = true;
btnTryAgain.visible = true;
btnTryAgain.addEventListener(MouseEvent.CLICK, restartGame);
mcLives.gotoAndStop(lives);
} else if (lives ==0){
mcLives.alpha =0;
btnTryAgain.enabled = true;
btnTryAgain.visible = true;
btnTryAgain.addEventListener(MouseEvent.CLICK, restartGame);
}else if (lives<=-1){
gotoAndStop(3);
}
trace("endGame has finished.");
} //eof endGame()
 function clearAll(){
if(bulletArray != null){
if(bulletArray.length >0){
for (i = 0; i < bulletArray.length; i++){
bulletArray[i].parent.removeChild(bulletArray[i]);
}
}
}
if(spaceshipFlying == true){
spaceshipFlying = false;
if(alienSpaceship.hasEventListener(Event.ENTER_FRAME)){
alienSpaceship.removeEventListener(Event.ENTER_FRAME, moveSpaceship );
}
if(spaceshipTimer.hasEventListener(TimerEvent.TIMER)){
spaceshipTimer.removeEventListener(TimerEvent.TIMER, moveSpaceship);
}
alienSpaceship.parent.removeChild(alienSpaceship);
}
trace("Flying? " + spaceshipFlying );
if(alienArray != null){
if (alienArray.length >0) {
for (i =0 ; i <alienArray.length; i++){
alienArray[i].parent.removeChild(alienArray[i]);
}
}
}
if(trackerArray != null){
for (i = 0; i <10; i++){
trackerArray[i].parent.removeChild(trackerArray[i]);
}
}
if (mcGunship != null){
mcGunship.parent.removeChild(mcGunship);
}

//	trace("alienArray - clearALL() " + alienArray.length);
if(this.hasEventListener(Event.ENTER_FRAME)){ 
removeEventListener(Event.ENTER_FRAME, moveBullets);
}
if (stage.hasEventListener(KeyboardEvent.KEY_DOWN)){
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); 
}
if(stage.hasEventListener(KeyboardEvent.KEY_UP)){
stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); 
}
trace("removed three listeners");
if(mcGunship.hasEventListener(Event.ENTER_FRAME)){
mcGunship.removeEventListener(Event.ENTER_FRAME, moveGunLeft);
}
if(mcGunship.hasEventListener(Event.ENTER_FRAME)){
mcGunship.removeEventListener(Event.ENTER_FRAME, moveGunRight);
} 
trace("removed gunship listeners");
if(enemyTimer != null && enemyTimer.hasEventListener(TimerEvent.TIMER)){
enemyTimer.removeEventListener(TimerEvent.TIMER, alienMoveRight);
}
if(enemyTimer != null && enemyTimer.hasEventListener(TimerEvent.TIMER)){
enemyTimer.removeEventListener(TimerEvent.TIMER, alienMoveLeft);
}
trace("removed gunship listeners");
if(spaceshipTimer != null){
spaceshipTimer.stop();
spaceshipTimer = null;
}
if(enemyTimer != null){
enemyTimer.stop();
enemyTimer = null;
}
trace("clearAll() stops timers ");
if(mcGunship != null){
mcGunship = null;
}
if(alienArray != null){
alienArray = null;
}
if(trackerArray != null){
trackerArray =null;
}
if(bulletArray != null){
bulletArray = null;
}
if(alienSpaceship != null){
alienSpaceship = null;
}

} //eof clearAll()
 function playFiringSound(){
var s:Sound = new Sound(new URLRequest("firing.mp3"));
soundChannel = s.play();
} 
 function playHitSound(){
var s:Sound = new Sound(new URLRequest("hit.mp3"));
soundChannel = s.play();
}
function playExplosionSound(){
var s:Sound = new Sound(new URLRequest("explosion.mp3"));
soundChannel = s.play();
}
 function removeAnim(evt:TimerEvent){
anim.parent.removeChild(anim);
animArray.splice(0,1);
anim = null;
trace("removeAnimation is complete");
}
 
4    
5    
6    
7    
8    
9    
10    
11    
12    
13    
14    
15    
16    
17    
18    
19    
20