Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Pontos não são computados

Meus pontos e os pontos do oponente não estão sendo computados, não consigo encontrar o erro. P5.js: https://editor.p5js.org/R3xttp4/present/Z39sTmij https://editor.p5js.org/R3xttp4/full/Z39sTmij https://editor.p5js.org/R3xttp4/sketches/Z39sTmij Código:

// Variáveis da Bolinha
let xBolinha = 300
let yBolinha = 200
let diametro = 25
let raio = diametro /2;

let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

// Variáveis da Raquete
let xRaquete = 5;
let yRaquete = 150;
let compRaquete = 10;
let alturRaquete = 90;

let colisao = false;

// Variáveis da Raquete Oponente
let xRaqueteOpo = 585;
let yRaqueteOpo = 150;
let velocidadeYOpo;

let meusPontos = 0;
let pontosOpo = 0;

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

function draw() {
  background(0);
  desenhaBolinha();
  moveBolinha();
  verificaBorda();
  desenhaRaquete(xRaquete, yRaquete);
  moveRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  desenhaRaquete(xRaqueteOpo, yRaqueteOpo);
  moveRaqueteOpo();
  verificaColisaoRaquete(xRaqueteOpo, yRaqueteOpo);
  placar();
  marcaPonto();
}

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

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

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

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

function desenhaRaquete(x, y){
  rect(x, y, compRaquete, alturRaquete); 
}

function moveRaquete(){
  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){
  colisao = collideRectCircle(x, y,
  compRaquete, alturRaquete, xBolinha, yBolinha, raio);
  if(colisao){
    velocidadeXBolinha *= -1;
  }
}

function moveRaqueteOpo(){
  velocidadeYOpo = yBolinha - yRaqueteOpo - compRaquete / 2 - 50;
  yRaqueteOpo += velocidadeYOpo;
}

function placar(){
  fill(255);
  text(meusPontos, 270, 20);
  text(pontosOpo, 320, 20);
}

function marcaPonto(){
  if (xBolinha > 590){
    meusPontos += 1;
  }
  if (xBolinha < 10){
    pontosOpo += 1;
  }
}
2 respostas
solução!

Sílvio, boa tarde!

Você esqueceu de considerar o raio da bolinha, pois o x da bolinha nunca irá passar 0, sendo assim basta adicionar o raio, que é 12.5, mas pra dar uma certeza você pode deixar 15 ficando como demonstrado abaixo:

//Função marcaPonto()
if(xBolinha <= 15) {
//...
} else if (xBolinha <= 585) {
//...
}

Espero ter ajudado e bons estudos!

Felipe, foi perfeito!!!