Duvido muito que esta seja a solução perfeita, pois o ideal seria descobrir uma maneira de fazer com que o problema não ocorresse. No entanto encontrei uma forma de fazer o próprio código resolver o problema quando a bolinha passa para trás da raquete e fica batendo na borda, o que além de ser muito chato também trava o jogo. Minha solução foi criar uma função que vou postar logo abaixo, mas antes quero descrever que só cheguei nesta solução porque primeira usei a função para testar se de fato o eixo X da bolinha ultrapassava a borda quando isso acontece. Para saber se era fato ou só aparência eu primeiro fiz a função somente até o console.log, e se você fizer desta forma pode testar se de fato está acontecendo o mesmo problema. Vamos ao código:
function bolinhaNaoFicaPresa(){
if (xBolinha + raio < 0){
console.log('bolinha ficou presa');
xBolinha = 300;
}
}
O valor 300 atribuído à variável é apenas o meio da tela, que possui 600 pixels de comprimento. Quando rodo o código agora sempre que ocorre esta falha o jogo lança a bolinha novamente no meio da tela, sem travar, e exibe uma mensagem no console para avisar que o problema ocorreu.
OBS.: Lembre-se que esta função precisa ser chamada dentro da função draw.