Para resolver o bug em aberto no curso logica de programação pong e javascript, usei do seguinte método:
Criei a variável "houvePonto" com o valor 0 cuja sua função seria basicamente servir como switch entre 0 e 1(tipo verdadeiro e falso):
let houvePonto = 0;
Na função "marcaPonto", dentro da estrutura do if, pedi para que o valor da variável "houvePonto" seja = 1 (ou seja, verdadeiro):
function marcaPonto(){
if (xBolinha > 590) {
meusPontos += 1;
houvePonto = 1;
ponto.play();
}
if (xBolinha < 10){
pontosOponente += 1;
houvePonto = 1;
ponto.play();
}
}
Na função "verificaColisaoRaquete", criei a condição de que se "houvePonto" fosse igual à 0 a função funcionaria normalmente, se não deixaria de funcionar:
function verificaColisaoRaquete(x,y){
if(houvePonto == 0){
colidiu = collideRectCircle(x, y, larguraRaquete, alturaRaquete, xBolinha, yBolinha, raioBolinha);
if (colidiu){
velocidadeXbolinha *= -1;
raquetada.play();
}
}
else{
colidiu = false;
}
}
E por ultimo criei a função "bolinhaFicaIntangivel" pedindo para que toda vez que a bolinha passasse no centro da tela pelo eixo x, "houvePonto" voltasse a ser 0 para que a função "verificaColisaoRaquete" sempre volte a funcionar:
function bolinhaFicaIntangivel(){
if(xBolinha == 300){
houvePonto = 0;
Fiz os testes e aparentemente tudo funcionou bem, enquanto o valor de "houvePonto" for 1, a bolinha ultrapassa a raquete e resolveu o problema dos pontos múltiplos quando a bolinha fica presa. O problema é: a bolinha continua prendendo atrás da raquete.
Alguém sabe me dizer por que isso continua acontecendo?