Ferramentas de Usuário

Ferramentas de Site


dev_web:actionscript:snippet: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;
	}
}
dev_web/actionscript/snippet/pong.txt · Última modificação em: 2018/05/14 21:37 (edição externa)