Oi Stephany, tudo bem? Espero que sim!
Esse bug ocorre por definirmos que o contato da bolinha cause uma inversão da direção quando colidir com algo, ou seja, quando ela acerta em um lugar como a parte de baixo da raquete, a bolinha tende a inverter sua direção, mas por estar em uma área próxima da borda e da raquete, a colisão faz com que ela volte para borda e da borda volte para raquete, criando assim um loop até sair daquela posição, assim causando os pontos infinitos e a prisão da bolinha.
A nossa primeira solução para esse impasse consistirá em alterar a direção da bolinha de forma definitiva, com um valor bem definido e que não simplesmente inverta a direção. Desse modo, a bolinha é obrigada a seguir esse raio de ação definido e conseguimos resolver esse impasse:
Continuação (1/2)
Continuação (2/2)
No scratch, o ângulo 0 é marcado no eixo y positivo, tendo isso mente usamos os valores -30 e -125 como ângulos negativos, sendo marcados no sentido horário e obtendo semelhança com os ângulos positivos 30 e 125. Como são ângulos negativos, eles também representam um valor positivo dentro da circunferência, desse modo podemos usar seus valores positivos, para isso basta subtrair do ângulo de 360°, usando 330 invés de -30° e 235 invés de -125° tranquilamente, ambos representam o mesmo ponto da reta.
Ainda podemos resolver de outra forma se for necessário, tomando algumas medidas focadas na raquete:
Se precisar de ajuda ou surgir alguma dúvida estamos à disposição, conte conosco!
Um bom dia e bons estudos.