quarta-feira, 19 de março de 2014
Pong - Mouse
Dando continuação ao projeto de fazer o pong, segue o código de um jogo de 1 player. Por enquanto mais se assemelha a um squash
// Horizontal
int bolaX = 200; //posição da elipse no eixo X
int dX = 10; // coeficiente de movimentação da elipse no eixo X
int dXoriginal = dX;
//Vertical
int bolaY = 200;
int dY = -10;
int dYoriginal = dY;
//paddle Mouse
int posXPaddle = 5;
int topoYPaddle;
int fundoYPaddle;
int alturaPaddle = 100;
int larguraPaddle = 20;
// Tela
int larguraTela = 800;
int alturaTela = 600;
// Game State
boolean derrota;
void setup()
{
size(larguraTela,alturaTela);
}
void draw()
{
topoYPaddle = mouseY;
fundoYPaddle = mouseY + alturaPaddle;
background(0);
rect(posXPaddle, mouseY,larguraPaddle,alturaPaddle);
ellipse(bolaX,bolaY,20,20);
bolaX += dX;
bolaY += dY;
detectarColisao();
detectarCenario();
}
void detectarColisao()
{
if(bolaX - 20 <= posXPaddle + larguraPaddle/2 && bolaX - 20 >= posXPaddle - larguraPaddle/2)
{
//println("Detectou X");
if(bolaY >= topoYPaddle && bolaY <= fundoYPaddle)
{
dX += dX/10;
dX *= -1;
calcularAngulo();
}
}
}
void detectarCenario()
{
if(bolaY >= 590 || bolaY <= 10)
{
inversoesY++;
dY *= -1;
}
}
void calcularAngulo()
{
float rand = random(3,8);
if(bolaY >= topoYPaddle && bolaY <= topoYPaddle + alturaPaddle/2)
{
dY -= rand;
//println(rand);
}
else
{
dY += rand;
//println("Bateu baixo " + rand);
}
}
}
Funções:
calcularAngulo: Detecta em qual posição do paddle a bola bateu gerando um efeito diferente de acordo com a posição da colisão.
detectarCenario: Vê se a bolinha rebateu na parede.
detectarColisão: Detecta se a bolinha está colidindo com a raquete
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário