3
respostas

movimentaRaqueteOponente não fez sentido

Fiquei perdida quando se criou essa função, nao entendi a lógica disso. Se puderem me auxilia ficarei grata, pois não vi resposta quanto a isso em nenhum outro tópico (e não é so eu que fiquei confusa)

Outro ponto: O professor tem fala que para movimentar a raquete ele usa as variáveis velocidadeXBolinha e velocidadeYBolinha, e ao meu er ele usa essas variáveis para movimentar a bolinha e não a raquete do jogador como é citado. Desde daí já se gera dúvidas que nao formam o raciocínio.

  • Alterei a fórmula e substitui o comprimentoBolinha por alturaBolinha e funcionou! Algo esta desintonizado aí!
function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - alturaRaquete / 2 - 30;
  yRaqueteOponente += velocidadeYOponente
}
3 respostas

Olá, Lory! Tudo bem contigo?

Eu fiz diversos testes utilizando a variável da aula raqueteComprimento

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

e sua alteração com a variável alturaRaquete

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

e ambos tiveram o mesmo comportamento em relação ao movimento.

Agora a velocidade vai receber valores diferentes, pois a variável velocidadeYOponente guardará o resultado dos valores calculados. Esse será o diferencial entre as variáveis. Já erro de comportamento, não existirá!

Sobre a outra dúvida

Outro ponto: O professor tem fala que para movimentar...

É proposital que a raquete do oponente siga a trajetória da bolinha. Por esse motivo ele utiliza as variáveis da bolinha para movimentar a raquete. O sincronismo entre bolinha e raquete será permanente.

Avançando no curso você verá diversos projetos de alunos no fórum dando outras alternativas de jogo e possibilidades para tornar o jogo mais dinâmico como o projeto do Rafael!

Espero ter contribuído, Lory!!!

Um abraço e até breve!

Minha dúvida é a mesma da Lory. Para mim não faz sentido utilizar o comprimento da raquete (=10) dividido por 2 (=5). Qual o objetivo dessa divisão?

O que sim, para mim, faz sentido é utilizar a altura (=90) dividida por 2 (=45). Dessa forma definimos o centro da raquete, para a colisão não ficar sendo na extremidade superior.

Se você pegar o valor de 30, supostamente utilizado pelo professor para dar uma margem de erro a bolinha, e substituir por 40, verá que a bolinha passa a colidir exatamente com o centro da raquete. Motivo? Por que, conforme minha primeira frase, já subtraímos o valor de 5 devido a divisão por 2 do comprimento.

Ou seja, utilizando a fórmula elaborada pelo professor "subtraindo o comprimento da raquete (=-10) dividindo tal valor por 2 (=-5) subtraindo 40, ao invés de 30, conforme indicado por ele (=-45)" e utilizando a fórmula da Lory e a mesma que a minha "subtraindo a altura da raquete (=-90) dividindo tal valor por 2 (=-45)", temos o mesmo resultado, porém, com uma lógica sensata.

Creio haver uma falha nessa aula. Abs!

A explicação do Bruno acima está perfeita, o código funciona por uma conveniência matemática, porém a divisão da espessura da raquete (qual o professor declarou como raqueteComprimento) não faz sentido lógico.

No meu entender, o correto como colocado acima pelo pela Lory e pelo Bruno, seria dividir a altura da raquete por 2, pois desta forma centralizaríamos a raquete com o Y da bolinha, posteriormente adicionando um valor aleatório para tendenciar a raquete ao erro (no caso foi utilizado -30).

Muito obrigado à vocês que abriram o tópico, fiquei uns 30mim aqui batendo cabeça para entender a lógica utilizada.