tronds

Pong in Flash

Oct 25th, 2013
4,470
0
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. stop();
  2.  
  3. //Create globals, actionlisteners
  4. var xInitialCoordinate: int = stage.stageWidth / 2;
  5. var yInitialCoordinate: int = stage.stageHeight / 2;
  6. var xMoveSpeed: int = 5;
  7. var yMoveSpeed: int = 5;
  8. var scorePOne:int = 0;
  9. var scorePTwo: int = 0;
  10. var numberConsecutiveCollisions: int = 0;
  11.  
  12. //Levels - you need to adjust the render method if you want to change this
  13. var levelCount: int = 5;
  14. var levelSpeeds: Array = new Array(levelCount);
  15. levelSpeeds[0] = new Array(5,5);
  16. levelSpeeds[1] = new Array(6,6);
  17. levelSpeeds[2] = new Array(7,7);
  18. levelSpeeds[3] = new Array(8,8);
  19. levelSpeeds[4] = new Array(9,11); //This'll be a tricky one.
  20.  
  21.  
  22.  
  23. //Dimensions of the various sprites
  24. var ballHeight:int = 10;
  25. var ballWidth:int = 10;
  26. var paddleHeight:int = 50;
  27. var paddleWidth:int = 20;
  28.  
  29. stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownEvent);
  30. stage.addEventListener(Event.ENTER_FRAME, render);
  31.  
  32. //Let's start this up, formatting and such.
  33. init();
  34.  
  35. //Function (or method if you like) to handle keyevents, move paddles.
  36. //KEY IS DOWN, I REPEAT, KEY IS DOWN!! REQUESTING BACKUP!!
  37.  
  38. //We use the arrowkeys and WASD (Well, only WS) for paddlemovement.
  39. function keyDownEvent(evt: KeyboardEvent): void {
  40.    
  41.     // We know that this'll be an int, because evt.keyCode will return the
  42.     // decimal value of the ascii char which
  43.     // represents the key pressed
  44.    var tastekode: int = evt.keyCode;
  45.    switch(tastekode){
  46.        case Keyboard.DOWN:
  47.             paddleRight.y += 30;
  48.             break;
  49.         case Keyboard.UP:
  50.             paddleRight.y -= 30;
  51.             break;
  52.         case Keyboard.S:
  53.             paddleLeft.y += 30;
  54.             break;
  55.         case Keyboard.W:
  56.             paddleLeft.y -= 30;
  57.             break;
  58.         default:
  59.             break;
  60.    }
  61. }
  62.  
  63. //Initfunction which sets up the environment nicely.
  64. function init(): void{
  65.     ball.x = xInitialCoordinate;
  66.     ball.y = yInitialCoordinate;
  67.     ball.width = ballWidth;
  68.     ball.height = ballHeight;
  69.    
  70.     paddleLeft.width = paddleWidth;
  71.     paddleLeft.height = paddleHeight;
  72.     paddleRight.width = paddleWidth;
  73.     paddleRight.height = paddleHeight;
  74.    
  75.     dottedLine.x = xInitialCoordinate;
  76.     dottedLine.y = 0;
  77.    
  78.     var tf:TextFormat = new TextFormat();
  79.     tf.color = 0xFFFFFF;
  80.     tf.size = 30;
  81.     /* Apply this specific text format to the Label instance. */
  82.     scorePlayerOne.setStyle("textFormat", tf);
  83.     scorePlayerTwo.setStyle("textFormat", tf);
  84. }
  85.  
  86. function updateGameScore(whotoupdate: int): void{
  87.     if(whotoupdate == 1){
  88.         scorePOne++;
  89.         scorePlayerOne.text = scorePOne.toString();
  90.     } else if (whotoupdate == 2){
  91.         scorePTwo++;
  92.         scorePlayerTwo.text = scorePTwo.toString();
  93.     }
  94.    
  95.     numberConsecutiveCollisions = 0;
  96.     ball.x = xInitialCoordinate;
  97.     ball.y  = yInitialCoordinate;
  98. }
  99.  
  100. //This is triggered for each new frame pushed by Flash,
  101. //effectively updating the gamescreen.
  102. function render(evt: Event): void{
  103.    
  104.     if (ball.y < 0 || (ball.y + ballHeight) > stage.stageHeight){
  105.         yMoveSpeed = -yMoveSpeed;
  106.     }
  107.    
  108.     //This could've been done nicer, definately.
  109.     switch(numberConsecutiveCollisions){
  110.         case 0:
  111.             if(yMoveSpeed < 0){
  112.                 yMoveSpeed = -levelSpeeds[0][0];
  113.             } else {
  114.                 yMoveSpeed = levelSpeeds[0][0];
  115.             }
  116.            
  117.             if(xMoveSpeed < 0){
  118.                 xMoveSpeed = -levelSpeeds[0][1];
  119.             } else {
  120.                 xMoveSpeed = levelSpeeds[0][1];
  121.             }
  122.            
  123.             break;
  124.         case 2:
  125.             if(yMoveSpeed < 0){
  126.                 yMoveSpeed = -levelSpeeds[1][0];
  127.             } else {
  128.                 yMoveSpeed = levelSpeeds[1][0];
  129.             }
  130.            
  131.             if(xMoveSpeed < 0){
  132.                 xMoveSpeed = -levelSpeeds[1][1];
  133.             } else {
  134.                 xMoveSpeed = levelSpeeds[1][1];
  135.             }
  136.            
  137.             break;
  138.         case 5:
  139.             if(yMoveSpeed < 0){
  140.                 yMoveSpeed = -levelSpeeds[2][0];
  141.             } else {
  142.                 yMoveSpeed = levelSpeeds[2][0];
  143.             }
  144.            
  145.             if(xMoveSpeed < 0){
  146.                 xMoveSpeed = -levelSpeeds[3][1];
  147.             } else {
  148.                 xMoveSpeed = levelSpeeds[3][1];
  149.             }
  150.            
  151.             break;
  152.         case 10:
  153.             if(yMoveSpeed < 0){
  154.                 yMoveSpeed = -levelSpeeds[4][0];
  155.             } else {
  156.                 yMoveSpeed = levelSpeeds[4][0];
  157.             }
  158.            
  159.             if(xMoveSpeed < 0){
  160.                 xMoveSpeed = -levelSpeeds[4][1];
  161.             } else {
  162.                 xMoveSpeed = levelSpeeds[4][1];
  163.             }
  164.            
  165.             break;
  166.         default:
  167.             break;
  168.     }
  169.    
  170.     //Ball goes out of bounds to left and right.
  171.     if((ballWidth + ball.x) < 0 ){
  172.         updateGameScore(2);
  173.     } else if( ball.x > stage.stageWidth){
  174.         updateGameScore(1);
  175.     }
  176.    
  177.     //trace(stage.stageHeight + " " + ball.y  + " " + yMoveSpeed );
  178.    
  179.     //Block paddles
  180.     if(paddleLeft.y <= 0){
  181.         paddleLeft.y = 0;
  182.     } else if((paddleLeft.y + paddleHeight) >= stage.stageHeight){
  183.         paddleLeft.y = stage.stageHeight - paddleHeight;
  184.     } else if(paddleRight.y <= 0){
  185.         paddleRight.y = 0;
  186.     } else if((paddleRight.y + paddleHeight) >= stage.stageHeight){
  187.         paddleRight.y = stage.stageHeight - paddleHeight;
  188.     }
  189.    
  190.     //hitTestObject tends to act weird, should look into this.
  191.     if(ball.hitTestObject(paddleRight) || ball.hitTestObject(paddleLeft)){
  192.        xMoveSpeed = -xMoveSpeed;
  193.        numberConsecutiveCollisions++;
  194.     }
  195.    
  196.     ball.x += xMoveSpeed;
  197.     ball.y += yMoveSpeed;
  198.     //Logic done. Now we don't need to use *that* anymore.
  199. }
Advertisement