1
resposta

Atividade concluída e uma dúvida para solucionar a colisão.

Bom dia, tudo bem?

Segue o meu projeto do jogo Pong:

https://github.com/Frolber/Jogos_cl-ssicos/tree/5b1fc0310ce0e2a84f126d7cae3fc1214d22912a/Pong/empty-example

Estou tentando, mas ainda não descobri o jeito de arrumar a colisão da raquete na parte de cima e de baixo, pois o que acontece:

uma imagem exemplificando situação descrito logo depois da imagem. Um retangulo posicionado no canto esquerdo e uma bolinha mais acima e um pouco para direita com setas mostrando a situação Quando a bolinha, vindo de cima para baixo, colide com parte de cima da raquete (parte superior do retângulo), teoricamente deveria voltar para cima. Mas na regra onde colocamos que se colidir em todos os cantos da raquete, tem que voltar de forma "horizontal" a direção mesmo que a bola desça 90 graus para baixo e vai ir pro lado ao invés de subir...

Sei que é um conteúdo básico e o intuito é entender a lógica de programação de uma forma geral e não precisaria ir a tão fundo assim...

Mas gostaria saber se tem como especificar essa situação dentro do IF e ajustar a velocidadeYBolinha quando bater na parte superior e inferior do retângulo?

Obrigado!!

1 resposta

Olá, Rodrigo! Tudo bem com você?

Em primeiro lugar gostaria de pedir desculpas pela demora em respondê-lo!

Em segundo, sua observação é fantástica e a escrita do tópico ficou excelente (além de muito clara em relação a explicação do problema e comportamento do jogo). A partir disso já podemos notar que seu caminho na área de tecnologia será fabuloso! Parabéns!

Em relação a solução, você está correto. É possível sim criar uma function que armazena a estrutura condicional que atribui o comportamento desejado no código. No entanto precisamos ficar atentos a duas coisas: o ponto em que a raquete será tocada e, como você já descreveu, a trajetória da bolinha após a colisão.

Outra forma de resolver é adicionar o comportamento de inversão também a trajetória da bolinha no eixo de Y, pois como você pode observar, a lógica só inverte o valor de X no sistema de coordenadas.

Espero que tenha ajudado de alguma forma, fico à disposição e no aguardo!

Um abraço e bons estudos!