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

Meu Pontos de 3 em 3 e Pontos do Oponente de 5 em 5

Meus pontos estão sendo marcados de 3 em 3 e os do oponente de 5 em 5, não consigo encontrar a fonte do problema.

/variáveis da Bolinha:
let xBolinha = 300;
let yBolinha = 200;
let diametroBolinha = 20;
let velocidadeXBolinha = 5;
let velocidadeYBolinha = 5;
let raioBolinha = diametroBolinha/2;

// variáveis da Raquete:
let xRaquete = 5;
let yRaquete = 150;
let widthRaquete = 10;
let heightRaquete = 90;
let velocidadeYRaquete = 5;

//variáveis Raquete do Oponente:
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

//variáveis do placar:
let meusPontos = 0;
let pontosOponente = 0;


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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  bolinhaBateVolta();
  mostraRaquete(xRaquete, yRaquete);
  movimentaRaquete();
  bateVoltaRaquete(yRaquete, velocidadeYRaquete);
  bateVoltaRaquete(yRaqueteOponente, velocidadeYOponente)
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  verificaColisaoBolinhaRaquete();
  verificaColisaoBolinhaRaqueteOponente();
  movimentaRaqueteOponente();
  mostraplacar();
  marcaponto();

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

function movimentaBolinha(){
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
}
function bolinhaBateVolta(){
  if (xBolinha+raioBolinha>width || xBolinha-raioBolinha<=0){
    velocidadeXBolinha*= -1;
  }
   if (yBolinha+raioBolinha>height || yBolinha-raioBolinha<=0){
    velocidadeYBolinha*= -1;
  }
}

function mostraRaquete(x, y){
  rect(x, y, widthRaquete,heightRaquete);
}

function movimentaRaquete(){
  if(keyIsDown(UP_ARROW)){
    yRaquete -= velocidadeYRaquete;
  } else if(keyIsDown(DOWN_ARROW)){
    yRaquete += velocidadeYRaquete;
  }

}

function bateVoltaRaquete(y, velocidade){

   if (y+heightRaquete>height || y<0){
    velocidade*= -1;
  }
}

function  verificaColisaoBolinhaRaquete(){
  if(xBolinha-raioBolinha<xRaquete+widthRaquete && yBolinha+raioBolinha<yRaquete+heightRaquete && yBolinha>yRaquete){
    velocidadeXBolinha*= -1;
  }
}
function  verificaColisaoBolinhaRaqueteOponente(){
  if(xBolinha+raioBolinha>xRaqueteOponente-widthRaquete && yBolinha+raioBolinha<yRaqueteOponente+heightRaquete && yBolinha>yRaqueteOponente){
    velocidadeXBolinha*= -1;
  }
}

function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente-heightRaquete/2 - 30;
  yRaqueteOponente += velocidadeYOponente;
}

function mostraplacar(){
  fill (255);
  text(meusPontos, 280,26);
  text(pontosOponente, 320, 26);
}

function  marcaponto(){
  if(xBolinha-raioBolinha<10){
    pontosOponente= pontosOponente +1;
  }else if(xBolinha+raioBolinha>590) {
    meusPontos= meusPontos+1;
  }
}
1 resposta
solução!

Consegui resolver o problema, embora não tenha realmente entendido o porquê.

Por algum motivo, não se deve incluir o raio no teste do if.

function  marcaponto(){
  if(xBolinha<15){
    pontosOponente= pontosOponente +1;
  }else if(xBolinha>585) {
    meusPontos= meusPontos+1;
  }
}
Ao invés de diminuir e aumentar o raio, redefini os valores levando o raio em consideração.