Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Algúem pelamor de deus me ajuda entender a lógica da função que movimenta a raquete do oponente (já li todas as respostas dos tópicos sobre isso)

Vamos lá...

No Scratch a lógica era de utilizar a posição y da bolinha e jogar uma margem de erro para o oponente errar. Beleza, isso tá claro.

Agora aqui no p5js, eu não estou conseguindo entender. Eu entendi que que a altura da raquete é dividade por 2 para a bolinhar acertar o centro dela, entendi que a subtração dos 30 é para dar aquela margem de erro para o oponente.

Quando entrou a parte de subtraur o y da raquete do oponente, fiquei com muita dificuldade de entender. Tanta que começa até a complicar a parte que entendi.

então, vamos à operação dessa lógica:

** velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteAltura / 2 - 30; yRaqueteOponente += velocidadeYOponente;**

Já vou adiantar aqui a explicação que a Camila usou para ajudar os demais, mas ja vou me adiantar e fazer os questionamentos em cima dela:

"Na função estamos indicando que velocidadeYOponente receberá ( = ) a posição Y da bolinha, subtraída ( - ) da posição Y da raquete do oponente (Por que subtraímos Y da raquete do oponente?) e a altura da raquete (raqueteComprimento) (Por que fazemos essa subtração em cima da outra?), para que a bolinha sempre toque em algum ponto da raquete do oponente.

A partir dessa parte da explicação, eu entendi mas sem compreender como ela se ralaciona com a parte anterior: 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)."

Eu entendo e consigo interpretar o plano cartesiano, mas não consigo entender a lógica. Eu entendi como se faz, mas não a lógica. Fiz teste de mesa adotando a posição y da bolinha como 200 e o padrão da criação da raquete Y como 150, igual ao código.

velocidadeYOponente = 200(yBolinha) - 150(yRaqueteOponente) - 90(raqueteComprimento) / 2 - 30 velocidadeYOponente = 200 - 150 - 45 - 30 velocidadeYOponente = -25 yRaqueteOponente += velocidadeYOponente = 150 - 25 = 125

aí, beleza, fiz as contas, cheguei nisso, mas não consigo entender.

Juro que é a primeira dúvida cabeluda que estou tendo sobre a lógica em si. Peço encarecidamente uma resposta bem clara da maneira mais simples possível. Se eu não sanar essa dúvida, vou passar mal kkkk

2 respostas
solução!

Eu achei essa lógica implementada pelo instrutor bastante confusa, eu já tinha me adiantado e fiz assim:

yRaqueteOpo = (yBolinha - (raqueteAltura / 2)) - 30

Creio que assim já fique bem claro só de ler o código, sem quebrar muito a cabeça, espero que tu esteja passando bem kkk

Aaaah meu caro!!! Agora sim! Seu código dispensa explicações =D

Isso ficou bem confuso para mim, até porque teve outra coisinha que não estava entrando na minha cabeça: no Scratch a gente estava usando os 4 quadrantes do plano cartesiano, já no p5, a gente estava apenas no quarto quadrante e estava díficil entender pq minha cabeça saía da primeira lógica que foi aplicada no Scratch.

Cara, muito obrigado por essa atençãozinha!