package { import flash.display.*; import flash.events.*; import flash.utils.Timer; import flash.text.TextField; public class AirRaid extends MovieClip { private var aagun:AAGun; private var airplanes:Array; private var bullets:Array; public var leftArrow, rightArrow:Boolean; private var nextPlane:Timer; private var shotsLeft:int; private var shotsHit:int; // function startAirRaid assigns some initial variables, calls other functions, & adds listeners for keyboard up/down keys // adds another listener that calls checkForHits function, calls setNextPlane function public function startAirRaid() { shotsLeft = 50; shotsHit = 0; showGameScore(); aagun = new AAGun(); addChild(aagun); airplanes = new Array(); bullets = new Array(); stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction); stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFunction); addEventListener(Event.ENTER_FRAME,checkForHits); setNextPlane(); } // function setNextPlane determines when next plane will be created public function setNextPlane() { nextPlane = new Timer(1500+Math.random()*1500,1); nextPlane.addEventListener(TimerEvent.TIMER_COMPLETE,newPlane); nextPlane.start(); } // function newPlane determines string value left/right then assigns random altitude & speed & passes three values as arguments to function AirPlane // then calls function setNextPlane public function newPlane(event:TimerEvent) { if (Math.random() > .5) { var side:String = "left"; } else { side = "right"; } var altitude:Number = Math.random()*50+20; var speed:Number = Math.random()*150+150; var p:Airplane = new Airplane(side,speed,altitude); addChild(p); airplanes.push(p); setNextPlane(); } // function checkForHits cycles through each bullet & checks if each bullet has hit each airplane type & assigns values or calls functions if hit is detected public function checkForHits(event:Event) { for(var bulletNum:int=bullets.length-1;bulletNum>=0;bulletNum--){ for (var airplaneNum:int=airplanes.length-1;airplaneNum>=0;airplaneNum--) { if (bullets[bulletNum].hitTestObject(airplanes[airplaneNum])) { shotsHit += airplanes[airplaneNum].currentFrame * 100; airplanes[airplaneNum].planeHit(); bullets[bulletNum].deleteBullet(); //shotsHit++; changed & moved to #61 showGameScore(); break; } } } if ((shotsLeft == 0) && (bullets.length == 0)) { endGame(); } } // function keyDownFunction assigns boolean values based on which key is pressed or calls function fireBullet if spacebar is pressed public function keyDownFunction(event:KeyboardEvent) { if (event.keyCode == 37) { leftArrow = true; } else if (event.keyCode == 39) { rightArrow = true; } else if (event.keyCode == 32) { fireBullet(); } } // function keyUpFunction assigns boolean values if conditions are met public function keyUpFunction(event:KeyboardEvent) { if (event.keyCode == 37) { leftArrow = false; } else if (event.keyCode == 39) { rightArrow = false; } } // function fireBullet creates bullet, subtracts 1 from shotsLeft,calls function showGameScore public function fireBullet() { if (shotsLeft <= 0) return; var b:Bullet = new Bullet(aagun.x,aagun.y,-300); addChild(b); bullets.push(b); shotsLeft--; showGameScore(); } // function showGameScore shows the game score public function showGameScore() { showScore.text = String("Score: "+shotsHit); showShots.text = String("Shots Left: "+shotsLeft); } // function removePlane performs for loop & if condition is met airplanes.splice happens (not sure what that does) public function removePlane(plane:Airplane) { for(var i in airplanes) { if (airplanes[i] == plane) { airplanes.splice(i,1); break; } } } // function removeBullet performs for loop & if condition is met bullets.splice happens (not sure what that does) public function removeBullet(bullet:Bullet) { for(var i in bullets) { if (bullets[i] == bullet) { bullets.splice(i,1); break; } } } // function endGame performs for loop without counter the decrements by 1 that calls deletePlane function each iteration, assigns null values some some // variables then removes listeners, stops nextPlane, & calls gotoAndStop function with string argument = gameover public function endGame() { for(var i:int=airplanes.length-1;i>=0;i--) { airplanes[i].deletePlane(); } airplanes = null; aagun.deleteGun(); aagun = null; stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyDownFunction); stage.removeEventListener(KeyboardEvent.KEY_UP,keyUpFunction); removeEventListener(Event.ENTER_FRAME,checkForHits); nextPlane.stop(); nextPlane = null; gotoAndStop("gameover"); } } }