segunda-feira, 13 de abril de 2015

Exercício 10: Brekout Simplificado

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