3
respostas

Sobre a lógica do cálculo na movimentação da raquete oponente

Olá, estou com uma dúvica no calculo da variavela velocidadeYOponente.

function movimentaRaqueteOponente() {
   velocidadeYOponente=yBolinha-yRaqueteOponente-     
   raqueteComprimento/2-30;
   console.log(velocidadeYOponente);
   yRaqueteOponente+=velocidadeYOponente;

 }

como vcs podem ver eu coleoquei um console.log na velocidadeYOponente e resposta é uma variação de 6 e -6. Gostaria de saber como chegar nesses valores através da linha:

   velocidadeYOponente=yBolinha-yRaqueteOponente-     
   raqueteComprimento/2-30;
3 respostas

Fala, Tiago! Tudo bem contigo?

Desculpe a demora em dar um retorno!

Poste o link do seu projeto para que possamos dar uma olhada nos valores que estipulou em cada variável. Acredito que assim eu consiga te explicar com mais detalhes

Um abraço e fico no aguardo!

let xBolinha=300;

//variáveis da bolinha
let yBolinha=200;
let diametro=15;

//velocidade da bolinha
let velocidadeXBolinha=6;
let velocidadeYBolinha=6;
let raio=diametro/2;

//variáveis raquete
let xRaquete=5;
let yRaquete=150;
let raqueteComprimento=10;
let raqueteAltura=90;

//variáveis raquete do oponente

let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;
let chanceDeErrar = 0;

let colidiu=false;

//plavat do jogo
let meusPontos=0;
let pontosDoOponente=0;

// sons do jogo

let raquetada;
let ponto;
let trilha;


function preload() {
  trilha=loadSound("trilha.mp3");
  ponto=loadSound("ponto.mp3");
  raquetada=loadSound("raquetada.mp3");
}

function setup() {
  createCanvas(600, 400);
  trilha.loop();

}

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete,yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete(xRaquete,yRaquete);
  // colisaoMinhaRaqueteBiblioteca();
  mostraRaquete(xRaqueteOponente,yRaqueteOponente);
  movimentaRaqueteOponente();
  verificaColisaoRaquete(xRaqueteOponente,yRaqueteOponente);
  incluiPlacar();
  marcaPonto();

}

function mostraBolinha() {
  circle(xBolinha,yBolinha,diametro);
}

function movimentaBolinha() {
  xBolinha+=velocidadeXBolinha;
  yBolinha+=velocidadeYBolinha;
}

function verificaColisaoBorda() {
  if(xBolinha + raio > width || xBolinha - raio < 0){
    velocidadeXBolinha*=-1;
  }

  if(yBolinha + raio > height || yBolinha - raio < 0){
    velocidadeYBolinha*=-1;
  }
}

function mostraRaquete(x,y){
  rect(x,y,raqueteComprimento,raqueteAltura);
}

function movimentaMinhaRaquete() {
  if(keyIsDown(UP_ARROW)){
    yRaquete-=10;
  }
   if(keyIsDown(DOWN_ARROW)){
    yRaquete+=10;
  }
}

// function verificaColisaoRaquete() {
//   if(xBolinha-raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) {
//     velocidadeXBolinha*=-1;
//   }
// }

function verificaColisaoRaquete(x,y) {
   colidiu=collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
  if(colidiu) {
    velocidadeXBolinha*=-1;
    raquetada.play();
  }
}

 function movimentaRaqueteOponente() {
   velocidadeYOponente=yBolinha-yRaqueteOponente-raqueteComprimento/2-50;
   yRaqueteOponente+=velocidadeYOponente+chanceDeErrar;
    calculaChanceDeErrar()

 }

function calculaChanceDeErrar() {
  if (pontosDoOponente >= meusPontos) {
    chanceDeErrar += 1
    console.log(chanceDeErrar);
    if (chanceDeErrar >= 39){
    chanceDeErrar = 40
       console.log(chanceDeErrar)
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}

function incluiPlacar() {
    stroke(255);
    fill(color(255,150,0));
    rect(150,10,40,20);
    fill(255);
    text(meusPontos,175,26);
    fill(color(255,150,0));  
    rect(450,10,40,20);
    fill(255);
    text(pontosDoOponente,475,26);
    textSize(16);
    textAlign(RIGHT);
}

function marcaPonto() {
  if(xBolinha>593) {
    meusPontos+=1;
    ponto.play();
  }
  if(xBolinha<8) {
    pontosDoOponente+=1;
    ponto.play();
  }
}

O link é https://editor.p5js.org/theldscouter/sketches/ddNPBtla1