Oi oi, Moacir!
Sua dúvida não é boba e não precisa se desculpar, você está fazendo uma reflexão sobre o conteúdo e essa atitude é essencial para um aprendizado mais eficiente!
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 que pode ser substituido por raqueteAltura), 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).
O jogo pega a referência da posição da bolinha e da raquete no plano cartesiano do p5.js, e depois subtrai da Altura da Raquete para atingir outro ponto.
Essa lógica acompanha o raciocínio do Scratch e depois haverá outras implementações.
Espero que as informações tenham ajudado você, fico à disposição!
Um abraço e bons estudos!!!