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

Não consegue pontuar sem aparecer erros, vocês podem me ajudar?

//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 25;
let raio = diametro / 2 ;

//velocidade da bolinha
let velocidadeXBolinha  = 2;
let velocidadeYBolinha  = 2;
let raqueteComprimento  = 10;
let raqueteAltura = 90;

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;

//variáveis do oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente ;

let colidiu = false;

// placar do jogo

let meuPontos  = 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, diametro);
 }

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, raqueteComprimento,
       raqueteAltura);

}
function movimentaMinhaRaquete() {
    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) {
    colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
    if (colidiu) {
        velocidadeXBolinha *= -1;
   }
}


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


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

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

Oii, tudo bem?

Há um errinho de sintaxe no seu código. Perceba que a variável criada foi meuPontos . Ela está chamada dessa forma na função incluiPlacar, mas com uma letra a mais na função marcaPonto :

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

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

Sugiro também que você teste as seguintes modificações:

  • Aumente o diâmetro da bolinha para 30:
//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 30;
let raio = diametro / 2 ;
  • Aumente a abrangência da marcação de pontos:
function marcaPonto() {
    if (xBolinha > 585) {
        meusPontos += 1;
    }
    if (xBolinha < 15) {
        pontosDoOponente += 1;
    }
}

Assim, a pontuação ocorrerá mais tranquilamente.

Espero ter ajudado! Estou a disposição, recorra ao fórum sempre que precisar.

Forte abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.

Gratidão, poxa fiquei muito feliz pelo feedback! Fiz o ajuste e deu tudo certo...

Tava com esse mesmo problema da não marcação de pontos e só foi mudar a abrangência da marcação de pontos. VLWW!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software