Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Imports--------------------------------------------------------------------------
- import flash.display.Stage;
- import flash.display.MovieClip;
- import flash.events.KeyboardEvent;
- import flash.utils.Timer;
- import flash.events.TimerEvent;
- import flash.events.Event;
- //---------------------------------------------------------------------------------
- //Variables========================================================================
- //MovieClips-----------------------------------------------------------------------
- var SpelerMC:MovieClip = SpelerMC;
- var enemyField:MovieClip = enemyField;
- var wallBottomArray:MovieClip = wallBottom;
- var endScreen:MovieClip = endScreen;
- var winScreen:MovieClip = winScreen;
- var startScreen:MovieClip = startScreen;
- //---------------------------------------------------------------------------------
- //Movement-------------------------------------------------------------------------
- var pDir:String = "NONE";
- var eDir1:String = new String;
- var pStepSize:int = 4;
- var eStepSize:int = 1;
- //---------------------------------------------------------------------------------
- //Misc-----------------------------------------------------------------------------
- var gameTimer:Timer = new Timer(0,0);
- var score:Number;
- var laserIndex:int;
- var spaceBar:Boolean;
- //---------------------------------------------------------------------------------
- //Array's--------------------------------------------------------------------------
- var wallArray:Array = new Array(wall1Mc, wall2Mc);
- var laserArray:Array = new Array(laser0, laser1, laser2, laser3, laser4, laser5);
- var enemyArray:Array = new Array(enemyField.enemy1,enemyField.enemy2,
- enemyField.enemy3,enemyField.enemy4,
- enemyField.enemy5,enemyField.enemy6,
- enemyField.enemy7,enemyField.enemy8,
- enemyField.enemy9,enemyField.enemy10,
- enemyField.enemy11,enemyField.enemy12,
- enemyField.enemy13,enemyField.enemy14,
- enemyField.enemy15,enemyField.enemy16,
- enemyField.enemy17,enemyField.enemy18,
- enemyField.enemy19,enemyField.enemy20,
- enemyField.enemy21,enemyField.enemy22,
- enemyField.enemy23,enemyField.enemy24,
- enemyField.enemy25,enemyField.enemy26,
- enemyField.enemy27,enemyField.enemy28,
- enemyField.enemy29,enemyField.enemy30,
- enemyField.enemy31,enemyField.enemy32,
- enemyField.enemy33,enemyField.enemy34,
- enemyField.enemy35,enemyField.enemy36,
- enemyField.enemy37,enemyField.enemy38,
- enemyField.enemy39,enemyField.enemy40,
- enemyField.enemy41,enemyField.enemy42,
- enemyField.enemy43,enemyField.enemy44,
- enemyField.enemy45,enemyField.enemy46,
- enemyField.enemy47,enemyField.enemy48,
- enemyField.enemy49,enemyField.enemy50,
- enemyField.enemy51,enemyField.enemy52,
- enemyField.enemy53,enemyField.enemy54,
- enemyField.enemy55,enemyField.enemy56,
- enemyField.enemy57,enemyField.enemy58,
- enemyField.enemy59,enemyField.enemy60,
- enemyField.enemy61,enemyField.enemy62,
- enemyField.enemy63,enemyField.enemy64,
- enemyField.enemy65,enemyField.enemy66);
- //---------------------------------------------------------------------------------
- //Init-----------------------------------------------------------------------------
- endScreen.visible = false; //Only visible when losing the game.
- winScreen.visible = false; //Only visible when winning the game.
- startScreen.visible = true; //Startscreen visible at game start and when s key is pressed.
- eDir1 = "LEFT", "RIGHT", "DOWN"; //Define wich directions the enemyField can go.
- gameTimer.stop(); //At game start this value must be stop(); to stop any functionality.
- score = 0; //The score count is set to 0 at the game start.
- //---------------------------------------------------------------------------------
- //EventListeners-------------------------------------------------------------------
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown);
- stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp);
- gameTimer.addEventListener(TimerEvent.TIMER, onTick);
- stage.addEventListener(Event.ENTER_FRAME, gameWon);
- //---------------------------------------------------------------------------------
- //Handlers Functions---------------------------------------------------------------
- function onTick(e:TimerEvent) { //A continuous run of the functions below.
- moveCharacter();
- moveEnemyField();
- playerCollisionDetectWall();
- enemyCollisionDetectWall();
- enemyCollisionDetectWallBottom();
- moveLasers();
- enemyHitTest();
- }
- function keyPressedDown(e:KeyboardEvent) {
- //Wanneer er een van de pijltjes toetsen ingedrukt wordt beweegt deze in die richting.
- var key:uint = e.keyCode;
- //trace('down : ' + key, 'char = ' + String.fromCharCode(e.keyCode));
- if (key == Keyboard.LEFT) {
- //De speler gaat naar links.
- pDir = "LEFT";
- }
- else if (key == Keyboard.RIGHT) {
- //De speler gaat naar rechts.
- pDir = "RIGHT";
- }
- if(key == Keyboard.SPACE) {
- //When the spacebar is being pressed it creates a laser beam.
- spaceBar = true;
- laserIndex++;
- if(laserIndex > 5) laserIndex = 0;
- var laser:Laser = laserArray[laserIndex];
- laser.x = SpelerMC.x;
- laser.y = SpelerMC.y -1;
- }
- if(key == 49) {
- //The number 49 is the AS3 keyCode for the number "1" on the keyboard.
- trace("Naar het start scherm.");
- endScreen.visible = false;
- winScreen.visible = false;
- startScreen.visible = true;
- }
- if(key == 83) {
- //The number 83 is the AS3 keyCode for the letter "S" on the keyboard.
- trace("[S] Ingedrukt, start het spel...");
- startScreen.visible = false;
- endScreen.visible = false;
- startGame();
- }
- }
- function keyPressedUp(e:KeyboardEvent) {
- //Check if the key is released to stop the movement/creation.
- var key:uint = e.keyCode;
- if (key == Keyboard.LEFT || key == Keyboard.RIGHT){
- pDir = "NONE";
- }
- if(key == 32) {
- spaceBar = false;
- }
- }
- //---------------------------------------------------------------------------------
- //Functions------------------------------------------------------------------------
- function moveCharacter() {
- //When the left or right arrow is pressed the player moves to that direction.
- if (pDir == "LEFT") {
- //Player goes left.
- SpelerMC.x -= pStepSize;
- }
- else if (pDir == "RIGHT") {
- //Player goes right.
- SpelerMC.x += pStepSize;
- }
- }
- function moveEnemyField() {
- //This function moves the MovieClip "enemyField".
- if (eDir1 == "LEFT") {
- enemyField.x -= eStepSize;
- }
- else if (eDir1 == "RIGHT") {
- enemyField.x += eStepSize;
- }
- }
- function playerCollisionDetectWall() {
- //Checks if the player run's into the Walls on the left or right side.
- for (var i:int = 0; i < wallArray.length; i++) {
- var wall:MovieClip = wallArray[i];
- if (SpelerMC.hitTestObject(wall)) {
- movePlayerBack();
- }
- }
- }
- function enemyCollisionDetectWall() {
- //This function checks if the enemyField bumps into the walls on the left or right side.
- //If the field hits these walls then it changes it's direction to the opposite direction.
- for (var i:int = 0; i < wallArray.length; i++) {
- var wall:MovieClip = wallArray[i];
- if (enemyField.hitTestObject(wall) == true) {
- if (eDir1 == "LEFT"){
- eDir1 = "RIGHT";
- trace("raaktMuur - Links");
- }
- else if (eDir1 == "RIGHT") {
- eDir1 = "LEFT";
- trace("raaktMuur - Rechts");
- }
- if (i >= 0) {
- enemyField.y += 15;
- trace("Stap van 10 pixels naar beneden.");
- }
- }
- }
- }
- function enemyCollisionDetectWallBottom() {
- //The function name speaks for itself. This colission checks if the enemy touches the
- //wall placed on the bottom.
- if (enemyField.hitTestObject(wallBottom) == true) {
- gameOver();
- }
- }
- function gameWon(e:Event) {
- //If you win the game this function will stop the game and show you the winning screen.
- if(score == 660) {
- //If you reach a score of 660 (66 enemy's x 10 = 660) you win the game.
- winScreen.visible = true;
- gameTimer.stop();
- }
- }
- function gameOver() {
- //When you lose the game it will be stopped and you see the game over screen.
- endScreen.visible = true;
- gameTimer.stop();
- }
- function startGame() {
- //This will act like some sort of reset. The function makes the start of the game.
- //This function will be used when you press [S] to start.
- trace("(Reset / Start Spel)");
- winScreen.visible = false;
- endScreen.visible = false;
- startScreen.visible = false;
- gameTimer.start();
- enemyField.x = 400; //Returns the enemyField to the start position.
- enemyField.y = 160; //Returns the enemyField to the start position.
- respawnEnemies();
- SpelerMC.x = 83; //Returns the player to the start position.
- SpelerMC.y = 531;//Returns the player to the start position.
- score = 0;
- scoreTxt.text = score.toString();
- }
- function movePlayerBack() {
- //Player takes 1 step back when the collision between the player and the wall is there.
- if (pDir == "LEFT") {
- //Moving the player
- SpelerMC.x += pStepSize;
- }
- else if (pDir == "RIGHT") {
- SpelerMC.x -= pStepSize;
- }
- }
- function moveLasers() {
- //Cycle through all six lasers in the laser array.
- for(var i:int = 0; i < 6; i++) {
- //If the laser is above the player, move it up 10 pixels every frame.
- if(laserArray[i].y < SpelerMC.y) {
- laserArray[i].y -= 10;
- //If the laser has gone off the top of the stage,
- //put it back at the player's feet again:
- if(laserArray[i].y < 0) {
- laserArray[i].x = i * 70 + 100;
- laserArray[i].y = 895;
- }
- }
- }
- }
- function enemyHitTest() {
- //For each of the three enemys
- for(var i:int = 0; i < enemyArray.length; i++) {
- //the each of the six lasers
- for(var j:int = 0; j < 6; j++) {
- //don't consider lasers that aren't in play:
- if(laserArray[j].y > SpelerMC.y) continue;
- if(enemyArray[i].visible && enemyArray[i].hitTestObject(laserArray[j])) {
- score += 10;
- scoreTxt.text = score.toString();
- trace("Invader nummer" + i + " neergeschoten!");
- /*try{
- enemyArray[i].parent.removeChild(enemyArray[i]);
- }catch(er:Error){ trace('removeChild failed'); }*/
- enemyArray[i].visible = false;
- laserArray[j].x = j * 70 + 100;
- laserArray[j].y = 595;
- }
- }
- }
- }
- function respawnEnemies():void{
- for(var i:int = 0; i < enemyArray.length; i++) {
- enemyArray[i].visible = true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement