1
resposta

[Sugestão] Colidir raquetes com as bordas no pong

Opa, bão?

Eu acabei de terminar a parte de lógica de prog em js e to tentando melhorar algumas coisas aqui no pong, por exemplo fazer as raquetes pararem de subir ou descer quando baterem nas bordas.

A "solução" que eu criei até agora foi essa mas está meio bugado e provavelmente não é o melhor jeito de se fazer isso.

Essa função foi o mais perto até agora que cheguei conseguir essa colisão.

function colisaoRaqueteBorda(){
    if(yRaquete + alturaRaquete  >= 400)
  {
    yRaquete = 390 - alturaRaquete;      
  }
    if(yRaquete /*- alturaRaquete*/  <= 0)
  {
    yRaquete = 10 /*+ alturaRaquete*/;      
  }
}

O código completo tá aqui projeto no github

Quem puder me ajudar valeu.

1 resposta

Olá Samuel, tudo bem?

Parabéns por terminar a parte de lógica de programação em JavaScript e por estar buscando melhorias para o jogo Pong.

Sobre a sua dúvida, uma sugestão alternativa seria utilizar a função Math.min e Math.max para limitar o movimento das raquetes nas bordas. Assim, ao invés de fazer as raquetes pararem de subir ou descer, elas irão parar de ultrapassar as bordas.

Contudo, esses parâmetros fogem do intuito do curso, mas eu vou mostrar como eles podem ser aplicados, mais como um parenteses para você ter essa bagagem extra tá :)

Segue um exemplo de como ficaria a função colisaoRaqueteBorda utilizando essa sugestão:

function colisaoRaqueteBorda() {
  yRaquete = Math.max(yRaquete, 0);
  yRaquete = Math.min(yRaquete, 400 - alturaRaquete);
}

Dessa forma, a raquete não irá ultrapassar a borda superior (y = 0) e nem a borda inferior (y = 400 - alturaRaquete).

Mas no geral à sua solução também funciona e está correta, e está seguindo o que é solicitado no curso, seguindo foco que é desenvolver a lógica da programação nos estudantes.

Em geral, seria isso!

Espero ter ajudado, abraços e bons estudos!