Advertisement
Guest User

space invaders fxd

a guest
Oct 15th, 2012
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Imports--------------------------------------------------------------------------
  2. import flash.display.Stage;
  3. import flash.display.MovieClip;
  4. import flash.events.KeyboardEvent;
  5. import flash.utils.Timer;
  6. import flash.events.TimerEvent;
  7. import flash.events.Event;
  8. //---------------------------------------------------------------------------------
  9.  
  10. //Variables========================================================================
  11. //MovieClips-----------------------------------------------------------------------
  12. var SpelerMC:MovieClip = SpelerMC;
  13. var enemyField:MovieClip = enemyField;
  14. var wallBottomArray:MovieClip = wallBottom;
  15. var endScreen:MovieClip = endScreen;
  16. var winScreen:MovieClip = winScreen;
  17. var startScreen:MovieClip = startScreen;
  18. //---------------------------------------------------------------------------------
  19.  
  20. //Movement-------------------------------------------------------------------------
  21. var pDir:String = "NONE";
  22. var eDir1:String = new String;
  23. var pStepSize:int = 4;
  24. var eStepSize:int = 1;
  25. //---------------------------------------------------------------------------------
  26.  
  27. //Misc-----------------------------------------------------------------------------
  28. var gameTimer:Timer = new Timer(0,0);
  29. var score:Number;
  30. var laserIndex:int;
  31. var spaceBar:Boolean;
  32. //---------------------------------------------------------------------------------
  33.  
  34. //Array's--------------------------------------------------------------------------
  35. var wallArray:Array = new Array(wall1Mc, wall2Mc);
  36. var laserArray:Array = new Array(laser0, laser1, laser2, laser3, laser4, laser5);
  37. var enemyArray:Array = new Array(enemyField.enemy1,enemyField.enemy2,
  38.                                  enemyField.enemy3,enemyField.enemy4,
  39.                                  enemyField.enemy5,enemyField.enemy6,
  40.                                  enemyField.enemy7,enemyField.enemy8,
  41.                                  enemyField.enemy9,enemyField.enemy10,
  42.                                  enemyField.enemy11,enemyField.enemy12,
  43.                                  enemyField.enemy13,enemyField.enemy14,
  44.                                  enemyField.enemy15,enemyField.enemy16,
  45.                                  enemyField.enemy17,enemyField.enemy18,
  46.                                  enemyField.enemy19,enemyField.enemy20,
  47.                                  enemyField.enemy21,enemyField.enemy22,
  48.                                  enemyField.enemy23,enemyField.enemy24,
  49.                                  enemyField.enemy25,enemyField.enemy26,
  50.                                  enemyField.enemy27,enemyField.enemy28,
  51.                                  enemyField.enemy29,enemyField.enemy30,
  52.                                  enemyField.enemy31,enemyField.enemy32,
  53.                                  enemyField.enemy33,enemyField.enemy34,
  54.                                  enemyField.enemy35,enemyField.enemy36,
  55.                                  enemyField.enemy37,enemyField.enemy38,
  56.                                  enemyField.enemy39,enemyField.enemy40,
  57.                                  enemyField.enemy41,enemyField.enemy42,
  58.                                  enemyField.enemy43,enemyField.enemy44,
  59.                                  enemyField.enemy45,enemyField.enemy46,
  60.                                  enemyField.enemy47,enemyField.enemy48,
  61.                                  enemyField.enemy49,enemyField.enemy50,
  62.                                  enemyField.enemy51,enemyField.enemy52,
  63.                                  enemyField.enemy53,enemyField.enemy54,
  64.                                  enemyField.enemy55,enemyField.enemy56,
  65.                                  enemyField.enemy57,enemyField.enemy58,
  66.                                  enemyField.enemy59,enemyField.enemy60,
  67.                                  enemyField.enemy61,enemyField.enemy62,
  68.                                  enemyField.enemy63,enemyField.enemy64,
  69.                                  enemyField.enemy65,enemyField.enemy66);
  70. //---------------------------------------------------------------------------------
  71.  
  72. //Init-----------------------------------------------------------------------------
  73. endScreen.visible = false; //Only visible when losing the game.
  74. winScreen.visible = false; //Only visible when winning the game.
  75. startScreen.visible = true; //Startscreen visible at game start and when s key is pressed.
  76. eDir1 = "LEFT", "RIGHT", "DOWN"; //Define wich directions the enemyField can go.
  77. gameTimer.stop(); //At game start this value must be stop(); to stop any functionality.
  78. score = 0; //The score count is set to 0 at the game start.
  79. //---------------------------------------------------------------------------------
  80.  
  81. //EventListeners-------------------------------------------------------------------
  82. stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown);
  83. stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp);
  84. gameTimer.addEventListener(TimerEvent.TIMER, onTick);
  85. stage.addEventListener(Event.ENTER_FRAME, gameWon);
  86. //---------------------------------------------------------------------------------
  87.  
  88. //Handlers Functions---------------------------------------------------------------
  89. function onTick(e:TimerEvent) { //A continuous run of the functions below.
  90.     moveCharacter();
  91.     moveEnemyField();
  92.  
  93.     playerCollisionDetectWall();
  94.     enemyCollisionDetectWall();
  95.     enemyCollisionDetectWallBottom();
  96.    
  97.     moveLasers();
  98.     enemyHitTest();
  99. }
  100.  
  101. function keyPressedDown(e:KeyboardEvent) {
  102. //Wanneer er een van de pijltjes toetsen ingedrukt wordt beweegt deze in die richting.
  103.     var key:uint = e.keyCode;
  104.     //trace('down : ' + key, 'char = ' + String.fromCharCode(e.keyCode));
  105.     if (key == Keyboard.LEFT) {
  106.         //De speler gaat naar links.
  107.         pDir = "LEFT";
  108.     }
  109.     else if (key == Keyboard.RIGHT) {
  110.         //De speler gaat naar rechts.
  111.         pDir = "RIGHT";
  112.     }
  113.     if(key == Keyboard.SPACE) {
  114.     //When the spacebar is being pressed it creates a laser beam.
  115.         spaceBar = true;
  116.         laserIndex++;
  117.         if(laserIndex > 5) laserIndex = 0;
  118.         var laser:Laser = laserArray[laserIndex];
  119.         laser.x = SpelerMC.x;
  120.         laser.y = SpelerMC.y -1;
  121.     }
  122.     if(key == 49) {
  123.     //The number 49 is the AS3 keyCode for the number "1" on the keyboard.
  124.         trace("Naar het start scherm.");
  125.         endScreen.visible = false;
  126.         winScreen.visible = false;
  127.         startScreen.visible = true;
  128.     }
  129.     if(key == 83) {
  130.     //The number 83 is the AS3 keyCode for the letter "S" on the keyboard.
  131.         trace("[S] Ingedrukt, start het spel...");
  132.         startScreen.visible = false;
  133.         endScreen.visible = false;
  134.         startGame();
  135.     }
  136. }
  137.  
  138. function keyPressedUp(e:KeyboardEvent) {
  139. //Check if the key is released to stop the movement/creation.
  140.     var key:uint = e.keyCode;
  141.     if (key == Keyboard.LEFT || key == Keyboard.RIGHT){
  142.         pDir = "NONE";
  143.     }
  144.     if(key == 32) {
  145.         spaceBar = false;
  146.     }
  147. }
  148. //---------------------------------------------------------------------------------
  149.  
  150. //Functions------------------------------------------------------------------------
  151. function moveCharacter() {
  152. //When the left or right arrow is pressed the player moves to that direction.
  153.     if (pDir == "LEFT") {
  154.         //Player goes left.
  155.         SpelerMC.x -= pStepSize;
  156.     }
  157.     else if (pDir == "RIGHT") {
  158.         //Player goes right.
  159.         SpelerMC.x += pStepSize;
  160.     }
  161. }
  162.  
  163. function moveEnemyField() {
  164. //This function moves the MovieClip "enemyField".
  165.     if (eDir1 == "LEFT") {
  166.         enemyField.x -= eStepSize;
  167.     }
  168.     else if (eDir1 == "RIGHT") {
  169.         enemyField.x += eStepSize;
  170.     }
  171. }
  172.  
  173. function playerCollisionDetectWall() {
  174. //Checks if the player run's into the Walls on the left or right side.
  175.     for (var i:int = 0; i < wallArray.length; i++) {
  176.         var wall:MovieClip = wallArray[i];
  177.         if (SpelerMC.hitTestObject(wall)) {
  178.             movePlayerBack();
  179.         }
  180.     }
  181. }
  182.  
  183. function enemyCollisionDetectWall() {
  184. //This function checks if the enemyField bumps into the walls on the left or right side.
  185. //If the field hits these walls then it changes it's direction to the opposite direction.
  186.     for (var i:int = 0; i < wallArray.length; i++) {
  187.         var wall:MovieClip = wallArray[i];
  188.         if (enemyField.hitTestObject(wall) == true) {
  189.             if (eDir1 == "LEFT"){
  190.                 eDir1 = "RIGHT";
  191.                 trace("raaktMuur - Links");
  192.             }
  193.             else if (eDir1 == "RIGHT") {
  194.                      eDir1 = "LEFT";
  195.                      trace("raaktMuur - Rechts");
  196.             }
  197.             if (i >= 0) {
  198.                 enemyField.y += 15;
  199.                 trace("Stap van 10 pixels naar beneden.");
  200.             }
  201.         }
  202.     }
  203. }
  204.  
  205. function enemyCollisionDetectWallBottom() {
  206. //The function name speaks for itself. This colission checks if the enemy touches the
  207. //wall placed on the bottom.
  208.     if (enemyField.hitTestObject(wallBottom) == true) {
  209.         gameOver();
  210.     }
  211. }
  212.  
  213. function gameWon(e:Event) {
  214. //If you win the game this function will stop the game and show you the winning screen.
  215.     if(score == 660) {
  216.     //If you reach a score of 660 (66 enemy's x 10 = 660) you win the game.
  217.         winScreen.visible = true;
  218.         gameTimer.stop();
  219.     }
  220. }
  221.  
  222. function gameOver() {
  223. //When you lose the game it will be stopped and you see the game over screen.
  224.     endScreen.visible = true;
  225.     gameTimer.stop();
  226. }
  227.  
  228. function startGame() {
  229. //This will act like some sort of reset. The function makes the start of the game.
  230. //This function will be used when you press [S] to start.
  231.     trace("(Reset / Start Spel)");
  232.     winScreen.visible = false;
  233.     endScreen.visible = false;
  234.     startScreen.visible = false;  
  235.     gameTimer.start();
  236.     enemyField.x = 400; //Returns the enemyField to the start position.
  237.     enemyField.y = 160; //Returns the enemyField to the start position.
  238.     respawnEnemies();
  239.     SpelerMC.x = 83; //Returns the player to the start position.
  240.     SpelerMC.y = 531;//Returns the player to the start position.
  241.     score = 0;
  242.     scoreTxt.text = score.toString();
  243. }
  244.  
  245. function movePlayerBack() {
  246. //Player takes 1 step back when the collision between the player and the wall is there.
  247.     if (pDir == "LEFT") {
  248.         //Moving the player
  249.         SpelerMC.x += pStepSize;
  250.     }
  251.     else if (pDir == "RIGHT") {
  252.             SpelerMC.x -= pStepSize;
  253.        
  254.     }
  255. }
  256.  
  257. function moveLasers() {
  258.     //Cycle through all six lasers in the laser array.
  259.     for(var i:int = 0; i < 6; i++) {
  260.         //If the laser is above the player, move it up 10 pixels every frame.
  261.         if(laserArray[i].y < SpelerMC.y) {
  262.             laserArray[i].y -= 10;
  263.             //If the laser has gone off the top of the stage,
  264.             //put it back at the player's feet again:
  265.             if(laserArray[i].y < 0) {
  266.                 laserArray[i].x = i * 70 + 100;
  267.                 laserArray[i].y = 895;
  268.             }
  269.         }
  270.     }
  271. }
  272.  
  273. function enemyHitTest() {
  274.     //For each of the three enemys
  275.     for(var i:int = 0; i < enemyArray.length; i++) {
  276.         //the each of the six lasers
  277.         for(var j:int = 0; j < 6; j++) {
  278.             //don't consider lasers that aren't in play:
  279.             if(laserArray[j].y > SpelerMC.y) continue;
  280.             if(enemyArray[i].visible && enemyArray[i].hitTestObject(laserArray[j])) {
  281.                 score += 10;
  282.                 scoreTxt.text = score.toString();
  283.                 trace("Invader nummer" + i + " neergeschoten!");
  284.                 /*try{
  285.                     enemyArray[i].parent.removeChild(enemyArray[i]);
  286.                 }catch(er:Error){ trace('removeChild failed'); }*/
  287.                 enemyArray[i].visible = false;
  288.                 laserArray[j].x = j * 70 + 100;
  289.                 laserArray[j].y = 595;
  290.             }
  291.         }
  292.     }
  293. }
  294.  
  295. function respawnEnemies():void{
  296.     for(var i:int = 0; i < enemyArray.length; i++) {
  297.         enemyArray[i].visible = true;
  298.     }
  299. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement