1
resposta

Dificuldade com erro da raquete do oponente.

Gostaria de saber em detalhes como funciona o código disponibilizado para resolver o problema dos acertos infinitos do oponente. Tentei entender, mas confesso que não entendi nada. O que exatamente aqui esta fazendo, de onde surgiram aqueles números.

Outra coisa, mesmo com o código, não consegui fazer meu adversário errar a bolinha.

Se alguém puder me ajudar a descobrir meu erro, fico grato.


function calculaChanceDeErrar() {
  if (pontosDoOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 39){
    chanceDeErrar = 40
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}

function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - comprimentoRaquete / 2 - 30 - yRaqueteOponente
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar
  calculaChanceDeErrar()
1 resposta

Fala, Ighor! Tudo bem contigo?

Desculpe a demora em dar um retorno

Todas as vezes em que a raquete do oponente se movimenta ela "chama" a função calculaChanceDeErrar e se os pontos do oponente forem maior que os seus ele vai somando 1 à variável chanceDeErrar.

Dentro da própria função movimentaRaqueteOponente existe um cálculo para atribuir um valor a yRaqueteOponente que calcula a velocidade da raquete, logo, o valor que está sendo incrementado em chanceDeErrar vai fazer total diferença no yRaqueteOponente

yRaqueteOponente += velocidadeYOponente + chanceDeErrar

Que vai impactar diretamente na velocidade da raquete em relação a bolinha

velocidadeYOponente = yBolinha - comprimentoRaquete / 2 - 30 - yRaqueteOponente

Caso o jogador esteja ganhando do oponente, o valor receberá 35 o que faz com que a probabilidade da raquete oponente errar seja mínima ou quase zero

  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }

Espero ter contribuído, Ighor!

Um abraço e bons estudos