1
resposta

Movimentação da raquete do oponente

Boa tarde!

Alguém poderia, por favor, detalhar o raciocínio por trás do código que movimenta a raquete do oponente.

velocidadeYOponente = yBolinha - yRaqueteOponente - comprimentoRaquete / 2 - 30

Ainda não consegui acompanhar essa lógica.

Obrigada, desde já!!!!

1 resposta

Oi oi, Raquel! Tudo bem com você?

Essa parte da lógica aplicada às vezes pode gerar algumas dúvidas mesmo mas é realmente importante que você continue com a iniciativa de procurar entender as funcionalidades. Vamos lá então!

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), para que a bolinha sempre toque em algum ponto da raquete do oponente. 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.

Um ponto de atenção é que quando descrevemos a velocidade y, ou xBolinha informamos o posicionamento do objeto no plano cartesiano do p5.js, que é a forma de desenhar elementos na tela.

Vou deixar um link com um artigo muito bom sobre o funcionamento do plano cartesiano no p5.js:

Espero que as informações tenham ajudado você, fico à disposição!

Um abraço e bons estudos!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software