1
resposta

[Dúvida] Contabilização dos Pontos

Olá,

Aqui o Pong está até que legal, usei da solução de encostar a raquete na parede para a bolinha não entrar atrás, mas o placar está somando 3 pontos a cada contato com a parede, conseguem me ajudar? Segue o código:

function incluiPlacar(){
  fill (255);
  text (meusPontos, 250, 30);
  text (pontosOponente, 350, 30);
}

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

Buenas!

o que ocorre é que provavelmente a bolinha fica tres vezes dentro desta condiçao. Por exemplo, ela chega 591 e marca um ponto, depois na posicao 597 e marca outro ponto, depois volta. e marca mais um.. (valores arbitrarios)

seria bom tu mostrar tambem o código de como esta a verificaçao de bater na parede pra mudar o sentido,talvez os parametros de verificaçao não sejam os mesmos q tu usou na marcaçao dos pontos. Tem que cuidar tambem para ele nao contabilizar pontos quando bater na raquete, por estar muito proxima da parede. uma soluçao que funcionou aqui, eu coloquei na mesma funcao a verificaçao de pontos e de mudar o sentido da bolinha, e ficou funcionando de boa.

function verificaBateBorda(){
   if (xBola<raio) {
    velocidadeXBola *= -1;
    pontuacaoCPU += 1;
  }
  if (xBola > width-raio) {
    velocidadeXBola *= -1;
    pontuacaoJogador1 += 1;
  }
  if (yBola > height-raio || yBola<raio) {
    velocidadeYBola *= -1;
  }
}

e para que a bolinha nao fique presa, uma soluçao é colocar mais uma condiçao que verifica se a bola bateu na raquete, que seria a direçao da bolinha. Para rebater na raquete do oponente, a velocidadeX da bola tem que ser > 0, que ai quando ela rebate ela atravessa a raquete. E na raquete do jogador o contratio, velocidadeX <0;

espero ter ajudado. Abs.