Ir para o conteúdo

Pong

import flash.events.TimerEvent;
import flash.events.KeyboardEvent;
import flash.events.Event;

stage.addEventListener(Event.ENTER_FRAME,direcao);
stage.addEventListener(Event.ENTER_FRAME,cpu);

var posAcerto:Number;
var percentCenter:Number;
var ajusteBola:Number;
var bolaX:int = 5;
var bolaY:int = 5;
var maxBolaX:int = 10;
var maxBolaY:int = 10;
var maxVelBola = 10;
var pontosPlayer:int = 0;
var pontosCPU:int = 0;

// TESTA COLISÃO E ALTERA DIREÇÃO DA BOLA
function direcao(evt:Event){
    if (player.hitTestObject(bola)){
        bolaX *= (-1); // Faz a bola bater na barra e voltar

                // Calcula a diferença entre o Y da bola e da barra do jogador, para alterar o ângulo quando ela bater
        if (bola.y > player.y){
            percentCenter = (bola.y - player.y) * (player.height/100);
            ajusteBola = (percentCenter/10);
            if (bolaY >= maxVelBola){
                bolaY = maxVelBola;
            }
            else
                bolaY += ajusteBola;
        }
        if (bola.y < player.y){
            percentCenter = (bola.y - player.y) * (player.height/100);
            ajusteBola = (percentCenter/10);
            if (bolaY >= maxVelBola){
                bolaY = maxVelBola;
            }
            else
                bolaY += ajusteBola;
        }
        if (bola.y == player.y){
            ajusteBola = 0;
            if (bolaY >= maxVelBola){
                bolaY = maxVelBola;
            }
            else
                bolaY += ajusteBola;
        }
    }
    if (inimigo.hitTestObject(bola)){
        bolaX *= (-1);
        if (bola.y > inimigo.y){
            percentCenter = (bola.y - inimigo.y) * (inimigo.height/100);
            ajusteBola = (percentCenter/10);
            if (bolaY >= maxVelBola){
                bolaY = maxVelBola;
            }
            else
                bolaY += ajusteBola;
        }
        if (bola.y < inimigo.y){
            percentCenter = (bola.y - inimigo.y) * (inimigo.height/100);
            ajusteBola = (percentCenter/10);
            if (bolaY >= maxVelBola){
                bolaY = maxVelBola;
            }
            else
                bolaY += ajusteBola;
        }
        if (bola.y == inimigo.y){
            ajusteBola = 0;
            if (bolaY >= maxVelBola){
                bolaY = maxVelBola;
            }
            else
                bolaY += ajusteBola;
        }
    }
    // Não deixa a bola sair do palco
        // Nos primeiros dois 'if's verifica se a bola saiu pelas laterais, contabilizando os pontos ao CPU ou ao jogador
    if (bola.x < 5){
        bola.x = 225;
        bola.y = 200;
        bolaY = 5;
        pontosCPU++;
    }
    if (bola.x > 545){
        bola.x = 225;
        bola.y = 200;
        bolaY = 5;
        pontosPlayer++;
    }
        // Verifica se a bola bate nas paredes de cima e de baixo, alterando sua direção em Y.
    if (bola.y <= 0){
        bolaY *= (-1);
    }
    if (bola.y >= 400){
        bolaY *= (-1);
    }
    // Movimenta a bola, não deixando que sua velocidade seja maior que a máxima permitida (10 neste caso)
    if (bolaX > maxBolaX){
        bolaX = maxBolaX;
    }
    bola.x += bolaX;
    if (bolaY > maxBolaY){
        bolaY = maxBolaY;
    }
    bola.y += bolaY;
    // movimenta player de acordo com a posição do mouse
    var velMax:Number = 5;
    var playerDelta:Number = player.y - mouseY;
    var movePlayer:Number = Math.min(Math.abs(playerDelta),velMax);
    if (playerDelta < 0){
        player.y += movePlayer;
    }
    else {
        player.y -= movePlayer;
    }
    // placares
    placarPlayer.text = pontosPlayer.toString();
    placarCPU.text = pontosCPU.toString();
}
    // Controle da barra da CPU
function cpu(evt:Event):void{
        // Define um ponto aleatório na barra para que o computador tente atingir a bola com este ponto
    var pontoDeToque:Number = Math.random() % inimigo.height;
    var velMaxima:Number = 4;

    // Obtem a distancia que a barra se move para atingir a bola
    var bolaDelta:Number = inimigo.y + pontoDeToque - bola.y;

    // Computa a quantidade para mover a bola, ou o maximo que pode-se
    // tentar para atingí-la.
    var moveInimigo:Number = Math.min(Math.abs(bolaDelta), velMaxima);

        // Move a barra da CPU com base nos cálculos acima
    if (bolaDelta < 0){
        inimigo.y += moveInimigo;
    }
    else {
        inimigo.y -= moveInimigo;
    }
}