Por que depois de criar uma função movimentaRaqueteDoOponente, a raquete do oponente não fica centralizada?
Segue link do vídeo para ilustrar a minha dúvida: https://youtu.be/z_i1SXC60jk
Por que depois de criar uma função movimentaRaqueteDoOponente, a raquete do oponente não fica centralizada?
Segue link do vídeo para ilustrar a minha dúvida: https://youtu.be/z_i1SXC60jk
Oi, Matheus! Tudo bem?
Como o yBolinha
dentro da função movimentaBolinha()
está comentado, não será atribuído um novo valor em loop à essa variável, dessa maneira, seu valor inicial permanecerá constante, ou seja, yBolinha = 200
.
Dessa forma, yRaqueteDoOponente = 150
apenas no intervalo de tempo inicial (que é extremamente rápido, mas podemos notar com atenção), após isso, o valor que de yRaqueteDoOponente
será definido pela função movimentaRaqueteOponente()
, que corresponde ao código abaixo:
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha - yRaqueteDoOponente - hRaquete / 2 - 30;
yRaqueteDoOponente += velocidadeYOponente
}
Nesse código podemos notar que yRaqueteDoOponente
é igual ao seu valor mais o valor de velocidadeYOponente
. Podemos então observar que o valor de velocidadeYOponente
é 200 - 150 - 90/2 - 30
substituindo as variáveis pelos seus respectivos valores numéricos, que dá -25. Logo, o valor final de yRaqueteDoOponente
não é 150 e sim 150 - 25 = 125
, por isso a raquete do oponente não está centralizada.
Todavia, para que esse novo valor altere um pouco menos o valor inicial de yRaqueteDoOponente
deixo como sugestão a troca de hRaquete
por wRaquete
, deixando a função movimentaRaqueteOponente()
da seguinte maneira:
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha - yRaqueteDoOponente - wRaquete / 2 - 30;
yRaqueteDoOponente += velocidadeYOponente
}
Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!
Aaah entendi, obrigado pela explicação!