segunda-feira, 9 de março de 2015

Atividade 3

- Utilizando o Lançamento Balístico, transforme o simulador em um "jogo".


  • código:



Primeiramente desenvolvemos o MRU (movimenro retilineo uniforme), depois fizemos o MRUV (movimento retilineo uniformemente variado), então, com a união dos dois criamos o
lançamento balístico.

primeiro foram definidas as variáveis utilizadas

float t=0; = tempo
float a=-2;= aceleração
float vY = 30; = velocidade no eixo y
float vX = 20; = velocidade no eixo x
float dX;= deslocamento no eixo x
float dY;= deslocamento no eixo y
float h; = altura 
float cont;= contador

é utilizado uma variável em cada eixo devido ao lançamento balístico ser a soma dos dois movimentos (Vertical e horizontal). A aceleração e o tempo permanecem para os dois eixos.

no setup foram definidos o framerate, o tamanho da tela, e  a altura utilizada para a criação dos retangulos.

void setup(){
  frameRate(60);
  size(600,600);
  h = 400;
}
no draw, foram definidos a cor do background, a função de criação de grades, a cor das letras que aparecem na tela, textos mostrando os valores das variáveis de tempo, velocidade,
e distância, funcões de criação de retângulos, função de lançamento da bola (lançamento balístico) e a atribuição de tempo.
void draw(){
  background(80);
  criandoGrades();
  fill(255);
  text("Tempo: " + t + "s", 20, 20);
  text("Velocidade: " + (vX + a*t), 20, 40);
  text("Distância X: " + dX, 20, 60);
  text("Distância Y: " + dY, 20, 80);
  retangulo1();
  retangulo2();
  retangulo3();
  lancaBola();
  t = t + 0.0166666666666667;
}


a função criandoGrades() é a responsável por desenhar as grades no background, dentro dela eu defino a quantidade de linhas, a cor e a localização (criando linhas na vertical e horizontal).
void criandoGrades(){
    for(int i=0; i<(width/50); i++){
   stroke(255, 255, 255);
   line(i * 50, 0, i * 50, width);
   line(0, i * 50, height, i * 50);
 }
}



a função lacaBola() é o lançamento balístico, ela que vai definir a trajetória feita pela bala, nela foi colocado uma condição para que a bola faça seu percurso, porém quando ela sair dos limites
da tela ela para de se mover. E a junção dos dois movimentos MRU + MRUV para fazer o trajeto de parabóla (também é definida a cor e o formato de elipse).
void lancaBola(){
  if(dX<width && dY>=0 && dY<height){
    dX = vX*t;
    dY = vY*t+a*t*t*0.5;
    fill(255,0,255);
    ellipse(dX,height-dY,20,20);
  }
}



as funções retangulo1/2/3() são o que eu utilizei para a criação do "jogo" proposto na atividade... o objetivo é que durante o lançamento da bala, a cor dos retangulos mude quando a bala
entrar em contato com eles
void retangulo1(){
  cont = h - dY;
  if((dX>=290 && dX<=300) && (cont<=420))
  {
    fill(0, 255, 255);
  }else
  {
  fill(255, 255, 0);
  }
  rect(290,365,20,20);
  } 


void retangulo2(){ 
  if((dX>=200 && dX<=220) && (cont<=430))
  {
    fill(0, 255, 255);
  }else
  {
  fill(255, 255, 0);
  }
  rect(200,380,20,20);
  }
  
void retangulo3(){
  if((dX>=380 && dX<=400) && (cont<=430))
  {
    fill(0, 255, 255);
  }else
  {
  fill(255, 255, 0);
  }
  rect(380,380,20,20);
}



Resultado:




Nenhum comentário:

Postar um comentário