A solução abaixo, apresentada pelo curso não funciona. O oponente nunca erra.
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento / 2 - 30;
yRaqueteOponente += velocidadeYOponente + chanceDeErrar
calculaChanceDeErrar()
}
function calculaChanceDeErrar() {
if (pontosDoOponente >= meusPontos) {
chanceDeErrar += 1
if (chanceDeErrar >= 39){
chanceDeErrar = 40
}
} else {
chanceDeErrar -= 1
if (chanceDeErrar <= 35){
chanceDeErrar = 35
}
}
}
Já havíamos sinalizado em aulas anteriores que o código utilizando "yRaqueteOponente - raqueteComprimento / 2 - 30" não possui sentido lógico e que, se a idéia fosse que a bolinha atingisse o centro da raquete o correto seria "- yRaqueteOponente - (raqueteAltura / 2)".
Creio que esse raciocínio tem afetado negativamente a solução para provocar o erro.
Tentei utilizar o meu racional (o mesmo que de outros colegas) e obtive um resultado melhor, isto é, às vezes o oponente acerta e às vezes ele erra.
function movimentaRaqueteOponente() {
velocidadeYOponente = yBolinha - yRaqueteOponente - (raqueteAltura / 2);
yRaqueteOponente += velocidadeYOponente + chanceDeErrar
calculaChanceDeErrar()
}
function calculaChanceDeErrar() {
if (pontosOponente >= pontosJogador) {
chanceDeErrar += 1
if (chanceDeErrar >= raqueteAltura / 2){
chanceDeErrar = raqueteAltura / 2
}
} else {
chanceDeErrar -= 1
if (chanceDeErrar <= -1 * (raqueteAltura / 2)){
chanceDeErrar = raqueteAltura / 2
}
}
}
Mesmo assim noto que ele ainda não é "fluido" nem 100% racional. Acho válido uma revisão das soluções propostas neste curso.