Oi, tudo bem por aí?
Seus questionamentos são muito pertinentes!
Sobre sua primeira dúvida, em relação à subtração de yRaqueteOponente
. O código ficaria assim:
function movimentaOponente(){
velocidadeYOponente = yBolinha - raqueteComprimento / 2 - 30 ;
yRaqueteOponente += velocidadeYOponente
}
E esse seria o resultado:
Percebe que a raquete do oponente desaparece super rapidamente da tela assim que o jogo se inicia?
Isso acontece pois a variável velocidadeYOponente
está sendo constantemente incrementada à yRaqueteOponente
. Quando o conteúdo da velocidade é apenas yBolinha - raqueteComprimento / 2
, esse valor vai faltar em dinamismo. Digamos que yBolinha
está com o valor 150. A velocidade, então, será 115 (- raqueteComprimento / 2 - 30), e yRaqueteOponente
será o próprio valor inicial (150) constantemente sendo acrescido de 115. Por isso a raquete ultrapassa os limites da tela e seu y
não para de crescer.
Subtrair yRaqueteOponente
é o que trás o dinamismo para esse movimento. Vamos lá: Se yBolinha
estiver com o valor 150, o resultado do cálculo atribuído à velocidadeYOponente
será -35 (considerando a posição inicial da raquete, que é 150, também). Com isso, yRaqueteOponente
se altera diminuindo 35 pixels em sua posição, e essa mesma mudança de valor já faz com que todo o cálculo se altere. Pode parecer estranho termos um valor negativo, já que isso seria acima do limite da nossa tela, não é? Mas na verdade esse valor só fará com que a raquete se mova para cima. Isso altera o valor de yRaqueteOponente
, que altera o valor de velocidadeYOponente
, e essas variáveis estarão sempre em influência mútua.
Acontece que temos muitas formas possíveis de chegar a um mesmo resultado dentro da programação, e sua segunda sugestão funciona perfeitamente! Parece que seu conhecimento de matemática e lógica tornou a função mais simples e tão eficaz quanto. Ao desprezar velocidadeYOponente
e atribuir o cálculo diretamente à yRaqueteOponente
, o movimento ficou dinâmico da forma que precisamos. Parabéns!
Caso você queira saber mais sobre a construção da movimentação da raquete do oponente feita pelo instrutor, deixo aqui um tópico em que explico detalhadamente sobre essa função:
E para te inspirar ainda mais, aqui está um tópico da monitora Andrieli com a forma desenvolvida por ela para deixar o movimento da raquete bem mais legal. Assim é possível perceber a diversidade de formas possíveis para construir o jogo:
Espero ter esclarecido sua dúvida. Estou à disposição.
Forte abraço!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!