Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

minha bolinha trava na raquete do oponente

Olá , tentei fazer sem a biblioteca e minha bolinha trava na raquete do oponente, alguém sabe o motivo?

Segue meu código:

Obs: Tentei usar a solução de outros aqui do fórum e trava do mesmo jeito.

//  VARIAVEIS BOLINHA
var xBolinha = 200;
var yBolinha = 200;
var diametro = 30;
var raio = diametro / 2;

var velocidadeXBolinha = 5;
var velocidadeYBolinha = 5;

//  VARIAVEIS RAQUETE
var xRaquete = 5;
var yRaquete = 150;
var comprimentoRaquete = 10;
var alturaRaquete = 90;

//  VARAVEIS RAQUETE OPONENTE

var xRaqueteOponente = 585;
var yRaqueteOponente = 150;
var velocidadeYOponente;

function setup() {
  createCanvas(600, 400);
}

function draw() {
  background(0);
  desenhaBolinha();
  velocidadeBolinha();
  bolinhaLimiteBorda();
  mostraRaquete(xRaquete, yRaquete,);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente,);
  moverRaquete();
  baterNaRaquete(xRaquete, yRaquete);
  baterNaRaqueteOponente();
  movimentaRaqueteOponente();

}
//   BOLINHA
function desenhaBolinha() {

  circle(xBolinha, yBolinha, diametro);

}

function velocidadeBolinha() {

  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;

}

function bolinhaLimiteBorda() {

  if (xBolinha + raio > width || xBolinha - raio < 0) {

    velocidadeXBolinha *= -1;
    velocidadeXBolinha *= 1;

  }
  if (yBolinha + raio > height || yBolinha - raio < 0) {

    velocidadeYBolinha *= -1;
    velocidadeYBolinha *= 1;
  }

}
//   RAQUETE
function mostraRaquete(x, y) {
  rect(x, y, comprimentoRaquete, alturaRaquete);

}

function moverRaquete() {

  if (keyIsDown(UP_ARROW)) {
    yRaquete -= 10;
  }

  if (keyIsDown(DOWN_ARROW)) {
    yRaquete += 10;
  }
}

function baterNaRaquete(x, y) {

  if (xBolinha - raio < x + comprimentoRaquete
    && yBolinha - raio < y + alturaRaquete
    && yBolinha + raio > y) {
    velocidadeXBolinha *= -1;

  }
}

function baterNaRaqueteOponente() {
  if(xBolinha + raio > xRaqueteOponente && yBolinha - raio < yRaqueteOponente + raqueteAltura 
    && yBolinha + raio > yRaqueteOponente ){ 
      velocidadeXBolinha *= -1;
    }

}

function movimentaRaqueteOponente() {
  velocidadeYOponente = yBolinha - yRaqueteOponente - comprimentoRaquete / 2 - 30;
  yRaqueteOponente += velocidadeYOponente;
}
1 resposta
solução!

Oi, Fabio! Tudo bem?

O problema ocorre pois dentro da função baterNaRaqueteOponente() está sendo usada raqueteAltura para se referir à variável responsável pela altura da raquete, entretanto, a variável declarada para essa funcionalidade, como podemos observar na linha 14 do código, foi nomeada como alturaRaquete.

Dessa forma, para resolvermos o problema basta alterarmos a variável raqueteAltura por alturaRaquete, deixando a função baterNaRaqueteOponente() da seguinte forma:

function baterNaRaqueteOponente() {
  if(xBolinha + raio > xRaqueteOponente && yBolinha - raio < yRaqueteOponente + alturaRaquete 
    && yBolinha + raio > yRaqueteOponente ){ 
      velocidadeXBolinha *= -1;
    }

}

Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓