Reprodução simplificada do jogo breakout, nessa versão o objetivo é evitar que a bola caia pelo maior tempo possível, ao deixar cair a bola o jogo reinicia, se o tempo for maior que o ultimo recorde este é atualizado na tela.
Dependendo onde bata "bola" a direcção para onde ela vai é diferente, se bater a direita sempre ira para direita, e vice e versa; esse efeito é bem mais simples do que o do jogo real, mas já da um olhar mais fluido, a cada batida da bola, sua velocidade aumenta para aumentar a dificuldade do jogo.
Os códigos que foram reaproveitados de aulas anteriores foram:
Função ehbola: desloca a bola e quica onde for determinado(Aula 9).
Código para mover as barras: Dessa própria aula.
Código para limitar a movimentação das barras dentro da tela: Mesmo que faz quicar a bola modificado(Aula 9).
Código de contagem do tempo: tirado do código moveBolaMRU(Aula 5).
Código-fonte:
int xP=50;
int yP;
float d=40;
float v=10;
float t;
int bolaX = 100;
int bolaY = 100;
float dY=5;
float dX=5;
float recorde;
void setup()
{
size(1280,720);
yP=height-40;
}
void draw()
{
background(0);
t+=0.1666666666667;
text("Melhor pontuação: "+recorde,20,40);
text("Tempo: "+t,20,20);
ehbola();
rect(xP,yP,80,20);
if(keyPressed)
{
if(keyCode==RIGHT && xP<=width-80)
{
xP+=10;
}
if(keyCode==LEFT && xP>=0)
{
xP-=10;
}
}
}
void ehbola()
{
rect(bolaX,bolaY,10,10);
bolaY -= dY;
bolaX+=dX;
if(bolaY <=5){
if(dX==0){
dX=5;}
dX+=1;
dY=dY*-1;
}
if(bolaY>height)
{
recorde=t;
t=0;
dY=5;
dX=5;
bolaX=100;
bolaY=100;
}
if(bolaX>=width-5 || bolaX <= 5){
//bolaX = 10;
if(bolaX>0){
dX+=1;}else{
dX-=1;}
dX=dX*-1;
d=v*t; //calcula a distancia no tempo atual
}
if(bolaX>=xP && bolaX<=xP+80 && bolaY==yP-10)
{
// Batendo na esquerda
if(bolaX>=xP && bolaX<=xP+40 && dX>0){
dX*=-1;
dY*=-1;
}
if(bolaX>=xP && bolaX<=xP+40 && dX<0){
dY*=-1;
}
if(bolaX>=xP+40 && bolaX<=xP+80 && dX<0){
dX*=-1;
dY*=-1;
}
if(bolaX>=xP+40 && bolaX<=xP+80 && dX>0){
dY*=-1;
}
// dX*=-1;
// dY*=-1;
}
if(bolaX<=xP && bolaX<=xP-5 && bolaY>=yP+5 || bolaX==xP && bolaY==yP)
{
dX*=-1;
dY*=-1;
}
if(bolaX<=xP+80 && bolaX<=xP+85 && bolaY>=yP+5 || bolaX==xP+80 && bolaY==yP+80)
{
dX*=-1;
dY*=-1;
}
}
Nenhum comentário:
Postar um comentário