Olá pessoal!
Procurei no fórum para ver se havia algum post parecido com essa sugestão mas não encontrei, então vou deixar aqui a maneira que encontrei para fazer o ajuste de dificuldade e algumas modificações que fiz para deixar o jogo mais fluido e eliminando também o bug da bola travada. A ideia foi modificar o incremento de erro fixo indicado pelo tutor da aula por um erro errovOP absoluto e por um erroOP relativo que controlam a velocidade da raquete OP. A ideia é pegar resultados de valores aleatórios, em que em sua maioria, farão a máquina acertar, mas podem ocorrer de fazerem a máquina errar. Vale notar que esses valores foram testados para velocidade vxBola e vyBola = 6, e que a velocidade da bola impacta efetivamente na capacidade de ajuste, então se estiverem jogando com velocidades maiores ou menores, é preciso ajustar os valores entregues pela função calcularerroOP.
function movimentoRaqueteOP(){
//Alteração feita para permitir uma variação de espaço da raquete OP mais natural e para permitir que o jogador faça pontos
if (yRaqueteOP != yBola){
calcularerroOP();
velocidadeyRaqueteOP = yBola - yRaqueteOP - alturaRaquete / 2 - errovOP;
yRaqueteOP += velocidadeyRaqueteOP * erroOP;
}
}
function calcularerroOP(){
erroOP = random(0.12,0.15)
errovOP = random(8,15)
}
Além disso, me inspirei em algumas sugestões que outros usuários enviaram e fiz um código para que, ao tomar ponto, a bola sai da raquete (do jogador ou máquina). Pensei nisso para simular um tipo de "saque". A alteração também permite você escolher a direção que a bola sairá ao levar ponto.
function destravaBola(){
if(xBola + rBola > width){
xBola = 575
yBola = yRaqueteOP + alturaRaquete/2
velocidadexBola = -6
}
if(xBola - rBola < 0){
xBola = 25
yBola = yRaqueteJ + alturaRaquete/2
velocidadexBola = 6
if (keyIsDown(UP_ARROW)){
velocidadeyBola = -6;
}
if (keyIsDown(DOWN_ARROW)){
velocidadeyBola = 6;
}
}
}
Espero ter ajudado.
Att,