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

Placar não funciona

//Variaveis da Bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 28;
let raio = diametro/2;

//Variaveis da velocidade da Bolinha
let velocidadeX = 3;
let velocidadeY = 3;

//Variaveis da raquete 1
let xRaquete = 5;
let yRaquete = 150;
let comprimentoRaquete = 10;
let alturaRaquete = 90;

//Variaveis do oponente
let xRaquete2 = 585;
let yRaquete2 = 150;
let velocidadeYRaquete2;

let hit = false;

//Variaveis placar
let pontos1 = 0;
let pontosCPU = 0;

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

function draw() {
  background(0);
  mostraBolinha();  
  movimentaBolinha();
  reconheceBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaRaquete1();
  hitRaquete(xRaquete, yRaquete);//Solucao GitHub
  //reconheceRaquete1();//Minha Solucao

  mostraRaquete(xRaquete2, yRaquete2);
  //movimentaRaquete2();
  hitRaquete(xRaquete2, yRaquete2);

  incluiPlacar();
  marcaPonto();
}

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

function movimentaBolinha() {
  xBolinha += velocidadeX;
  yBolinha += velocidadeY;
}

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

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

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


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

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

}

function hitRaquete(x, y) {
  hit = collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
  if(hit){
    velocidadeX *= -1;
  }
}

function movimentaRaquete2() {

  velocidadeYRaquete2 = yBolinha - yRaquete2 - comprimentoRaquete/2 - 30;
  yRaquete2 += velocidadeYRaquete2;

}

function incluiPlacar(){
  fill(255);
  text(pontos1, 278, 26);
  text(pontosCPU, 321, 26);

}

function marcaPonto(){
  if(xBolinha > 590){
    pontos1 += 1;
  }
  if(xBolinha < 10){
    pontosCPU += 1;
  }
}

Mesmo que a bolinha toque nas bordas os pontos não estão sendo contabilizados no placar. Não consigo encontrar o erro no código. https://editor.p5js.org/pedroheriquecarvalhomota/sketches/rRfqjUQ6o

2 respostas
solução!

Fala, Pedro! Tudo bem contigo?

Para contabilizar os pontos, o game tem como base o centro da bolinha, logo, dependendo de quanto o centro da bolinha passa do limite que estipulamos... ponto!

No seu código, fiz as seguintes alterações:

function marcaPonto() {
    if (xBolinha > 585) {
        meusPontos += 1;
    }
    if (xBolinha < 15) {
        pontosDoOponente += 1;
    }
}

Agora é só rodar ;-)

Para fazer um teste, altere consideravelmente essas variáveis e verá que não contabiliza somente um ponto, mas vários! Enquanto a bolinha permanecer dentro do limite estipulado vai contabilizando esses pontos!

Espero ter ajudado, Pedro!

Um abraço e bons estudos!!!

Funcionou! Muito obrigado.