domingo, 8 de março de 2015

Exercício 3: Jogo Estilo Angry Birds - BÔNUS Código de Simulação de MRU e MRUV (ATUALIZADO)

Preview do "Jogo":


ATUALIZAÇÃO: Com o comando background comentado na função draw, agora a bola tem um rastro, como foi pedido.

Explicação do código
É criada a janela com 600x600 px, a função grid é usada para criar um grid na tela, a função lanBalistico é responsável por receber os dois valores de velocidade fornecidos(x,y), e calcular o deslocamento no eixo x e y, e move a bola aos pontos correspondentes e mostra na tela a frase "Acertou!!!" caso o circulo atinja o alvo.

Para brincar um pouco com esse "Jogo" basta e mudando os números passados na função lanBalistico

Código Fonte do Jogo:

float t = 0;
float d;
float v;
float v0 = 105;

float vx = 160;
float vy = 40;

float a = -20;

float dx;
float dy;



void setup(){
  frameRate(60);
  size(600,600);
  background(185);

}

void draw(){
  v = v0+a*t;
 // background(185);
  grid();
  text("Tempo: "+t,20,20);
  text("Velocidade Inicial: "+v0,20,40);
  text("Velocidade Atual: "+v,20,60);
  text("Distancia Percorrida: "+d,20,80);

  //Chamando funçao do lançamento balistico
  lanBalistico(140,200);
 
  //Alvo
  rect(440, 20, 120, 55);
  //Plataforma
  rect(420, 75, 180, 20);
  //Suporte da Plataforma
  rect(490, 95, 40, width-95);

    t=t+0.01666666666666666;
}

void grid(){
  int intervalo=50;
  int lines = width/intervalo;
  for(int i=0; i<lines; i++){

  line(i*intervalo,0,i*intervalo,width);
  line(0,i*intervalo,height,i*intervalo);
}
}

void lanBalistico(float x, float y){
    dx = x*t;
    dy = y*t+a*t*t/2;
 
    ellipse(dx,width-dy,20,20);
    println("("+dx+" , "+(width-dy)+")");
    if(dx>=440 && width-dy==20 || dx>=440 && width-dy==75 || dx>=440 && width-dy<75 && width-dy>20){
        text("Acertou!!!!!", 20,100);
    }

}

BÔNUS MRU:
Essa função pode ser adicionada ao código anterior, ela calcula o deslocamento seguindo o Movimento Retilíneo Uniforme, e move uma bola segundo esse deslocamento

void moveBolaMRU(){
    d=v*t;
 
    ellipse(d,300,20,20);
 
}

BÔNUS MRUV:
Mesmo caso da função anterior, só que nesse caso é com o Movimento Retilíneo Uniformemente Variado.

void moveBolaMRUV(){
  d=v0*t +a*t*t/2;
  ellipse(width/2,height-d,20,20);
}

Nenhum comentário:

Postar um comentário