tronds icon

Pong in Flash

tronds | PRO | 10/25/13 07:03:03 PM UTC | 0 ⭐ | 10325 👁️ | Never ⏰ | []
ActionScript 3 |

0 B

|

None

|

0 👍

/

0 👎

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.
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎