Solucionado (ver solução)
Solucionado
(ver solução)
3
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

3 respostas
solução!

Oi oi, Guilherme!

Essa parte é difícil mesmo.

Bom, antes de tudo precisamos esclarecer que essas variáveis armazenam valores. Por sua vez, esses valores correspondem aos pontos no plano cartesiano, o instrutor utiliza a subtração e divisão para deixar o código legível e com a possibilidade de refatoração. É pra gente conseguir entender melhor como o projeto funciona.

Sobre a parte de subtração, funciona como uma exclusão de determinadas áreas para colidir com a raquete raquete, e para que a raquete acompanhe o movimento da bolinha. Um aluno aqui do fórum mostrou com desenhos essa parte da lógica, vou deixar o link do tópico aqui: Entendendo condições da colisão da raquete.

Se você continuar com dúvidas, pode falar sem problemas. Fico à disposição. Qualquer coisa também estou no Discord da Alura

Um abraço!

Heeey Camila!

Com a sua explicação junto com a de outro estudante que me respondeu também, consegui finalmente entender! Não fazia sentido para mim pq eu estava esquecendo de notar algo muito importante que é o eixo de cada objeto desses aí. O xy da bolinha nasce no centro dela enquanto do retângulo nasce em seu canto superior esquerdo.

Eu não conseguia compreender pq uma lógica tão simples aplicada no scratch ficou mais complexa no p5. Esqueci que no Scratch nós podemos determinar onde será o xy de cada personagem o que não ocorre no JS. Agora entedi que naquela subtração ele alinhou os xy da raquete e bolinha para assim aplicar a lógica do movimento.

Muito obrigadoooooo /

Oi oi, Guilherme! Tudo tranquilo?

Nossa, fico muito feliz que você tenha conseguido entender. Só um detalhe, no p5.js a gente também consegue indicar as coordenadas no eixo x e y, só que há uma diferença: no scratch nós usamos os quatro quadrantes do plano cartesiano e no p5.js os desenhos na tela são feitos no quarto quadrante do plano cartesiano.

Vou deixar um artigo para você entender melhor esse ponto: Plano Cartesiano no p5.js

Um grande 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