Tendo como base as soluções propostas por outros alunos, resolvi me desafiar a criar minha própria solução para fazer o oponente errar algumas vezes. Primeiro criei a variável chanceDeErrar. Veja como ficou.
let chanceDeErrar = 0;
Criei uma função chamado calculaChanceDeErrar(). Veja como ficou.
function calculaChanceDeErrar(){
if(xBolinha < 300){
chanceDeErrar = round(random(-80,80));
}else{
chanceDeErrar = 0;
}
}
Veja que utilizei a função random para sortear um numero aleatório entre -80 e 80 quando a bolinha estiver da minhaRaquete. Obs: a função round arredonda para um número inteiro mais próximo.
Depois eu chamei essa função verificaColisaoRaquete(x, y) e marcaPonto(). Veja como ficou.
function verificaColisaoRaquete(x, y){
colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
if (colidiu){
velocidadeXBolinha *= -1;
raquetada.play();
calculaChanceDeErrar();
}
}
function marcaPonto(){
if (xBolinha > 585){
meusPontos += 1
ponto.play();
}
if (xBolinha < 15){
pontosDoOponente += 1
ponto.play();
calculaChanceDeErrar();
}
}
Ou seja, a cada colisão nas raquetes e a cada ponto da minhaRaquete um número aleatório é sorteado entre -80 e +80.
Com isto é só incluir a variável chanceDeErrar na velocidadeYOponente. Veja como ficou.
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 + chanceDeErrar ;
yRaqueteOponente += velocidadeYOponente;
}
Por tanto a cada toque que a bolinha dá nas duas raquetes e quando a minhaRaquete fizer ponto a posição Y da RaqueteOponente muda, fazendo com que aleatoriamente a raquete oponente erre alguns lances.
Obs: os números -80 e +80 podem ser mudados, depois dos testes achei este intervalo bem razoável.
Sou iniciante, então pode ter algo erro, então qualquer coisa só falar.