Olá, Jose!
Pelo que entendi, o problema que você está enfrentando é que quando a bola toca na borda com a parte inferior ou superior da raquete, ela começa a encostar várias vezes entre a raquete e a borda, contabilizando muitos pontos. Isso pode estar acontecendo porque a bola está "presa" entre a raquete e a borda, causando várias colisões em um curto espaço de tempo.
Uma possível solução para esse problema seria adicionar uma verificação adicional na função que lida com a colisão da bola com a raquete. Você poderia verificar se a bola está se movendo na direção da raquete antes de registrar a colisão. Assim, a colisão só seria registrada uma vez, quando a bola toca a raquete pela primeira vez, e não seria registrada novamente até que a bola se movesse para longe e depois voltasse a tocar a raquete.
Aqui está um exemplo de como você poderia fazer isso:
function verificaColisaoRaquete(x, y) {
if (yBolinha - raio < yRaquete && yBolinha + raio > yRaquete && xBolinha - raio < xRaquete && xBolinha + raio > xRaquete) {
if (yBolinha < yRaquete && velocidadeYBolinha > 0) {
return false;
}
if (yBolinha > yRaquete && velocidadeYBolinha < 0) {
return false;
}
return true;
}
return false;
}
Nesse código, velocidadeYBolinha
é a velocidade vertical da bola, e yRaquete
é a posição vertical da raquete. A função verificaColisaoRaquete
verifica se a bola está se movendo na direção da raquete antes de registrar a colisão.
Espero que isso resolva o seu problema. Lembre-se, essa é apenas uma sugestão e pode precisar de ajustes para se adequar ao seu código específico. Espero ter ajudado e bons estudos!