5
respostas

Não marca minha pontuação, apenas do oponente

//variáveis da bolinha
let xBolinha = 100;
let yBolinha = 200;
let diametro = 30;
let raio = diametro / 2;

//velocidade da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;

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

//variáveis do oponente
let xRaqueteDoOponente = 585;
let yRaqueteDoOponente = 150;
let velocidadeYOponente;

//variáveis do placar
let meusPontos = 0;
let pontosDoOponente = 0;


let colidiu = false;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBolinha();
  mostraRaquete();
  movimentaRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  verificaColisaoRaquete(xRaqueteDoOponente, yRaqueteDoOponente);
  //mostraRaqueteDoOponente();
  movimentaRaqueteDoOponente();
  incluiPlacar();
  marcaPonto();

}

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

function mostraRaquete() {
  rect(xRaquete, yRaquete, raqueteComprimento, raqueteAltura);  
}

function mostraRaqueteDoOponente() {
  rect(xRaqueteDoOponente, yRaqueteDoOponente, raqueteComprimento, raqueteAltura);
}

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

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

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



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

}

function movimentaRaqueteDoOponente() {
  velocidadeYOponente = yBolinha - yRaqueteDoOponente - raqueteComprimento / 2 - 30;
  yRaqueteDoOponente += velocidadeYOponente;
}

function incluiPlacar() {
  fill(255);
  text(meusPontos, 278, 26);
  text(pontosDoOponente, 321, 26);
}

function marcaPonto() {
  if(xBolinha - raio >= 586){
    meusPontos += 1;
  }
  if(xBolinha - raio <= 0) {
    pontosDoOponente += 1;
  }
}

Coloquei o "mostraRaqueteDoOponente()" como comentário para fazer o teste.

5 respostas

Se puder postar o link do projeto no p5 eu agradeço. Fica mais fácil para fazer os testes.

ops...claro:

https://editor.p5js.org/marcosrddd/sketches/eE6lFnWeM

Na função marcaPonto, altera a condição do if para:

if(xBolinha - raio >= 566){

566 no lugar do 586, que vai dar certo.

Pontuou colocando 563 mas pontua mesmo colidindo com a raquete do oponente. Se colocar valor maior do que isso não pontua, vou tentar em outro navegador.

No meu eu coloquei 566 e deu certo. Ai eu descomentei a parte da raquete do oponente, e quando batia nela, não estava pontuando.