1
resposta

Não entendi a lógica das funções de movimento da raqueteOponente

Olá!

O meu jogo deu certo, mas não consegui ententer a lógica ne da funçao de movimento da raquete do Oponente {raqueteComprimento / 2 - 30;} e nem do {chanceDeErrar} .

Agradeço se alguém puder me explicar!

Tks

1 resposta

Olá, Ana! Tudo bem com você?

É comum termos dúvidas nessa parte da lógica aplicada mas é realmente importante que você continue com a iniciativa de procurar entender as funcionalidades. Vamos lá então!

  • movimentaRaqueteOponente()

O instrutor utilizou a função movimentaRaqueteOponente() para "automatizar" o movimento da raquete e fazer com que ela "siga" a movimentação da bolinha no eixo y (ou seja, para cima e para baixo). Mas como isso funciona?

Vamos olhar novamente o código:

function movimentaRaqueteOponente() {
    velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;
    yRaqueteOponente += velocidadeYOponente
}

Na função estamos indicando que velocidadeYOponente receberá ( = ) a posição Y da bolinha, subtraída( - ) da posição Y da raquete do oponente e a altura da raquete (raqueteComprimento, que pode ser substituída por raqueteAltura), para que a bolinha sempre toque em algum ponto da raquete do oponente e tenha sensibilidade de colisão. Este valor será dividido por 2 (que significa que a bolinha irá tocar na metade da raquete) e, ainda, subtrairemos 30(- 30) (ou seja, vai tocar em um ponto menor e específico da raquete do oponente).

Essa lógica acompanha o raciocínio do Scratch e depois haverá outras implementações.

  • chanceDeErrar()

A função chanceDeErrar() já opera de uma forma um pouco diferente, pois fará uma verificação a partir de uma estrutura condicional (o if). Vejamos:

function calculaChanceDeErrar() {
  if (pontosDoOponentes >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 39){
    chanceDeErrar = 45 //
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}

Nessa função ele diz que :

  • SE os pontos do oponente forem maior ou igual aos meus pontos, aumente a chance de errar.
  • E SE a Chance de errar for maior ou menor que 39 (que nesse caso é um valor que aumenta a probabilidade da raquete errar, pois está diretamente ligado a sua movimentação no eixo y), aumente essa probabilidade para 45 (ou seja, a chance do oponente errar será maior).
  • Caso essas condições não ocorram, vamos diminuir a chance de errar,
  • e SE a chance de errar for menor ou igual a 35, mantenha a probabilidade em 35.

Vou deixar aqui um link para um tópico que foi respondido lindamente pelo Scuba Cassio Murilo, onde ele esclarece de uma forma bem bacana essa dúvida e aprofunda um pouco mais o conhecimento sobre o assunto: https://cursos.alura.com.br/forum/topico-dificuldade-com-erro-da-raquete-do-oponente-150325

Espero que tenha conseguido ajudar você e caso continue com dúvidas, fico à disposição

Um abraço e bons estudos!