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

Pontos contabilizam de 5 em 5

Meus pontos são somados de 5 em 5, ja tentei mexer um pouco na distancia mas continuou com o mesmo problema.

//variavéis da Bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 30;
let raio = diametro/2;

//variavéis da velocidade da Bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

//variavéis da Raquete
let xRaquete = 5;
let yRaquete = 150;
let comprimentoRaquete = 10;
let alturaRaquete = 90;

//variavéis da Raquete do Oponete
let xRaqueteDireita = 585;
let yRaqueteDireita = 150;
let velocidadeRaqueteDireita = 6;
let raioRaquete = alturaRaquete/2;

let colidiu = false;

//placar do jogo
let meusPontos = 0
let pontosOponente = 0


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

function draw() {
  background(0);
  mostraBolinha();
  moveBolinha();
  colisaoBolinha();
  mostraRaqueteEsquerda();
  moveRaquete();
  mostraRaqueteDireita();
  velocidadeRaqueteOponente();
  moveRaqueteDireita();
  //verificaColisao();
  //verificaColisaoDireita();
  colisaoRaqueteBiblioteca();
  incluiPlacar();
  marcaPontos(meusPontos, pontosOponente);

}

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

}

function moveBolinha(){
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;

}

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

function mostraRaqueteEsquerda(){
      rect(xRaquete, yRaquete, comprimentoRaquete,  alturaRaquete);

}

function mostraRaqueteDireita(){
        rect(xRaqueteDireita, yRaqueteDireita, comprimentoRaquete,  alturaRaquete);

}

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


function velocidadeRaqueteOponente(){
  yRaqueteDireita += velocidadeRaqueteDireita;
}


function moveRaqueteDireita(){
  if (yRaqueteDireita > height || yRaqueteDireita < 0 ){
    velocidadeRaqueteDireita *= -1;
  }
}

function verificaColisao(){
  if(xBolinha - raio < xRaquete + comprimentoRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete){
     velocidadeXBolinha *= -1;
     }

}

function verificaColisaoDireita(){
  if(xBolinha - raio < xRaqueteDireita + comprimentoRaquete && yBolinha - raio < yRaqueteDireita + alturaRaquete && yBolinha + raio > yRaqueteDireita){
     velocidadeXBolinha *= -1;
     }

}

function colisaoRaqueteBiblioteca(){
  colidiu = collideRectCircle(xRaquete, yRaquete, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
  if(colidiu){
         velocidadeXBolinha *= -1;
  }
}

function incluiPlacar() {
  fill(255)
  textSize(24)
  text(meusPontos, 245, 26)
  text(pontosOponente, 340, 26)
}

function marcaPontos() {
  if (xBolinha + raio > 590) { 
     meusPontos += 1; 
}

if (xBolinha - raio < 10) {
    pontosOponente += 1;
}
}
1 resposta
solução!

Oi, Perola! Tudo bem?

O problema está ocorrendo pois o valor da posição x da bolinha responsável por conferir a colisão com borda, necessária para a pontuação, está muito pequena para o intervalo de tempo em que é realizado essa conferência.

Dessa forma, para solucionarmos o problema basta substituirmos os valores 590 e 10 por 598 e 2 dentro da função marcaPontos(), deixando-a da seguinte maneira:

function marcaPontos() {
  if (xBolinha + raio > 598) { 
     meusPontos += 1; 
    }

    if (xBolinha - raio < 2) {
        pontosOponente += 1;
    }
}

Espero ter ajudado!

Um forte abraço e bons estudos!

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