1
resposta

O meu placar não está funcionando e minha bolinha está confusa

Olá pessoal,

Eu fiz o código conforme o professor foi fazendo, mas o meu placar não funciona, ele está nas posições corretas, mas não esta pontuando. E também quando tiro as barras ("//"), do método ("//verificaColisaoRaquete();") a bola fica somente no centro e bugada. Podem me ajudar?

//VARIÁVEIS DA BOLINHA
let xBolinha = 300;
let yBolinha = 200;
let dBolinha = 28;
let raio = dBolinha / 2;

// VELOCIDADE DA BOLINHA
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;


// VARIÁVEIS DA RAQUETE
let xRaquete = 5;
let yRaquete = 150
let wRaquete = 10;
let hRaquete = 90;


// VARIÁVEIS DO OPONENTE
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;

let colidiu = false;

// PLACAR DO JOGO
let meusPontos = 0;
let pontosDoOponente = 0;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  //verificaColisaoRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  //movimentaRaqueteOponente();
  verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
  incluiPlacar();
  marcaPonto();
}

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

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

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

function mostraRaquete(x, y){
  rect(x, y, wRaquete, hRaquete);
}

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

function verificaColisaoRaquete(){
  if (xBolinha - raio < xRaquete + wRaquete 
      && yBolinha - raio < yRaquete + hRaquete 
      && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;    
  }
}

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

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

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

function marcaPonto() {
    if (xBolinha > 590) {
        meusPontos += 1;
    }
    if (xBolinha < 10) {
        pontosDoOponente += 1;
    }
}
1 resposta

Boa noite Francisco,

sobre o problema da pontuação, o xBolinha nunca será maior que 590 ou menor que 10, pois não está levando em conta o raio dela (que é 14). Dessa forma, a borda da bolinha colide com o limite do canva antes do xBolinha (que o centro dela).

Tente dessa forma pra ver se resolve:

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