1
resposta

Pontuação varia de acordo com a velocidade da bolinha

Oii, tudo bem? Mesmo defendendo o oponente sempre faz pontos, porém quando eu altero a velocidade de 6 para 2, ele não pontua quando eu defendo. Achei esquisito. Alguém poderia me ajudar? Obrigado

//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;

//variáveis da velocidade da bolinha
let velocidadeX = 6;
let velocidadeY = 6;
let raio = diametro / 2;

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let wRaquete = 10;
let hRaquete = 90;

//variáveis do oponente
let xOponenteRaquete = 585;
let yOponenteRaquete = 150;
let yVelocidadeOponente;

let colidiu = false;

//placar do jogo
let meusPontos = 0;
let pontosOponente = 0;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaRaquete();
  verificaColisao();
  mostraRaquete(xOponenteRaquete, yOponenteRaquete);
  movimentaRaqueteOponente();
  verificaColisaoRaquete(xRaquete,yRaquete)
  incluiPlacar();
  marcaPonto();
  verificaColisaoRaquete(xOponenteRaquete,yOponenteRaquete)

}

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

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

function verificaColisaoBorda(){
    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, wRaquete, hRaquete)
}


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

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


function verificaColisao(){
  if (xBolinha - raio < xRaquete + wRaquete && yBolinha - raio <yRaquete + hRaquete && yBolinha + raio > yRaquete){
    velocidadeX *= -1
  }
}
function movimentaRaqueteOponente(){
  yVelocidadeOponente = yBolinha - yOponenteRaquete - wRaquete / 2 - 30;
  yOponenteRaquete += yVelocidadeOponente
}

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

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

Olá, Victor! Tudo bom?

Desculpe a demora em responder você!

Acredito que o problema esteja ocorrendo por conta da lógica da função. Certamente se você aumentar o valor de subtração, o erro da raquete do oponente irá acontecer. No entanto você pode utilizar outra lógica para trabalhar com o erro do oponente, confira nesta atividade do curso: Para Saber mais: erro do oponente.

Espero que as informações tenham ajudado!

Fico à disposição em caso de dúvidas

Um abraço e bons estudos!