1
resposta

Solução do curso não funciona

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.

1 resposta

Olá, Bruno.

Você pode entrar em contato com a Alura através deste link.

Quanto aos seus ajustes, continue assim! Quanto mais se exercitar, melhor vc fica!