stop(); //Create globals, actionlisteners var xInitialCoordinate: int = stage.stageWidth / 2; var yInitialCoordinate: int = stage.stageHeight / 2; var xMoveSpeed: int = 5; var yMoveSpeed: int = 5; var scorePOne:int = 0; var scorePTwo: int = 0; var numberConsecutiveCollisions: int = 0; //Levels - you need to adjust the render method if you want to change this var levelCount: int = 5; var levelSpeeds: Array = new Array(levelCount); levelSpeeds[0] = new Array(5,5); levelSpeeds[1] = new Array(6,6); levelSpeeds[2] = new Array(7,7); levelSpeeds[3] = new Array(8,8); levelSpeeds[4] = new Array(9,11); //This'll be a tricky one. //Dimensions of the various sprites var ballHeight:int = 10; var ballWidth:int = 10; var paddleHeight:int = 50; var paddleWidth:int = 20; stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownEvent); stage.addEventListener(Event.ENTER_FRAME, render); //Let's start this up, formatting and such. init(); //Function (or method if you like) to handle keyevents, move paddles. //KEY IS DOWN, I REPEAT, KEY IS DOWN!! REQUESTING BACKUP!! //We use the arrowkeys and WASD (Well, only WS) for paddlemovement. function keyDownEvent(evt: KeyboardEvent): void { // We know that this'll be an int, because evt.keyCode will return the // decimal value of the ascii char which // represents the key pressed var tastekode: int = evt.keyCode; switch(tastekode){ case Keyboard.DOWN: paddleRight.y += 30; break; case Keyboard.UP: paddleRight.y -= 30; break; case Keyboard.S: paddleLeft.y += 30; break; case Keyboard.W: paddleLeft.y -= 30; break; default: break; } } //Initfunction which sets up the environment nicely. function init(): void{ ball.x = xInitialCoordinate; ball.y = yInitialCoordinate; ball.width = ballWidth; ball.height = ballHeight; paddleLeft.width = paddleWidth; paddleLeft.height = paddleHeight; paddleRight.width = paddleWidth; paddleRight.height = paddleHeight; dottedLine.x = xInitialCoordinate; dottedLine.y = 0; var tf:TextFormat = new TextFormat(); tf.color = 0xFFFFFF; tf.size = 30; /* Apply this specific text format to the Label instance. */ scorePlayerOne.setStyle("textFormat", tf); scorePlayerTwo.setStyle("textFormat", tf); } function updateGameScore(whotoupdate: int): void{ if(whotoupdate == 1){ scorePOne++; scorePlayerOne.text = scorePOne.toString(); } else if (whotoupdate == 2){ scorePTwo++; scorePlayerTwo.text = scorePTwo.toString(); } numberConsecutiveCollisions = 0; ball.x = xInitialCoordinate; ball.y = yInitialCoordinate; } //This is triggered for each new frame pushed by Flash, //effectively updating the gamescreen. function render(evt: Event): void{ if (ball.y < 0 || (ball.y + ballHeight) > stage.stageHeight){ yMoveSpeed = -yMoveSpeed; } //This could've been done nicer, definately. switch(numberConsecutiveCollisions){ case 0: if(yMoveSpeed < 0){ yMoveSpeed = -levelSpeeds[0][0]; } else { yMoveSpeed = levelSpeeds[0][0]; } if(xMoveSpeed < 0){ xMoveSpeed = -levelSpeeds[0][1]; } else { xMoveSpeed = levelSpeeds[0][1]; } break; case 2: if(yMoveSpeed < 0){ yMoveSpeed = -levelSpeeds[1][0]; } else { yMoveSpeed = levelSpeeds[1][0]; } if(xMoveSpeed < 0){ xMoveSpeed = -levelSpeeds[1][1]; } else { xMoveSpeed = levelSpeeds[1][1]; } break; case 5: if(yMoveSpeed < 0){ yMoveSpeed = -levelSpeeds[2][0]; } else { yMoveSpeed = levelSpeeds[2][0]; } if(xMoveSpeed < 0){ xMoveSpeed = -levelSpeeds[3][1]; } else { xMoveSpeed = levelSpeeds[3][1]; } break; case 10: if(yMoveSpeed < 0){ yMoveSpeed = -levelSpeeds[4][0]; } else { yMoveSpeed = levelSpeeds[4][0]; } if(xMoveSpeed < 0){ xMoveSpeed = -levelSpeeds[4][1]; } else { xMoveSpeed = levelSpeeds[4][1]; } break; default: break; } //Ball goes out of bounds to left and right. if((ballWidth + ball.x) < 0 ){ updateGameScore(2); } else if( ball.x > stage.stageWidth){ updateGameScore(1); } //trace(stage.stageHeight + " " + ball.y + " " + yMoveSpeed ); //Block paddles if(paddleLeft.y <= 0){ paddleLeft.y = 0; } else if((paddleLeft.y + paddleHeight) >= stage.stageHeight){ paddleLeft.y = stage.stageHeight - paddleHeight; } else if(paddleRight.y <= 0){ paddleRight.y = 0; } else if((paddleRight.y + paddleHeight) >= stage.stageHeight){ paddleRight.y = stage.stageHeight - paddleHeight; } //hitTestObject tends to act weird, should look into this. if(ball.hitTestObject(paddleRight) || ball.hitTestObject(paddleLeft)){ xMoveSpeed = -xMoveSpeed; numberConsecutiveCollisions++; } ball.x += xMoveSpeed; ball.y += yMoveSpeed; //Logic done. Now we don't need to use *that* anymore. }