2
respostas

Compartilhando uma evolução

Vi aqui no fórum, um colega a pedir uma solução para as raquetes no jogo Pong não saírem do mapa, isto é, não ultrapassarem as bordas. Dado ao fato de que como eu, muitos daqui são novatos nesta área, pensei que por mais que sejamos novatos, podemos e temos o dever de tentar para que possamos de alguma forma entender. Então eu arrisquei-me e deu certo!!!!!!!!!!!!!!!!!!!!!!!!! Confesso que estou muito contente, e que todos percebam, que só precisamos tentar!!!!! Veja como eu fiz:.

-criei 01 função para a raquete e para a raqueteOponente. -como o yRaquete fica mais próximo do ponto zero do canvas: yRaquete < 0 e se ela passar do ponto zero do eixo y, a raquete voltaria para a posição mais extrema que ela pode chegar da borda, que é o yRaquete no ponto zero do eixo y do canvas.

Para o outro lado da raquete fiz a mesma coisa, só que do outro lado, para o yRaquete passar com o seu eixo y além dos 400 que é o ponto máx do canvas, ela tem que passar por completo a raquete, já que o eixo y da raquete está na parte contrária, quer dizer virado mais para o ponto zero do eixo y, então eu fiz: yRaquete +90 > height, quer dizer que o ponto y da raquete somado com a altura da raquete, o yRaquete passa a ficar na outra extremidade e assim causa a colisão. Quando ele causa a colisão, ele volta para o ponto mais extremo que o yRaquete pode chegar neste lado do canvas, que é 400 - 90. Ficando o yRaquete + sua altura encostado na borda. Para a raquete do oponente, a regra é a mesma!!!!! É só repetir. Não se esqueça de declarar as duas funções no draw(). OBS: atenção para as medidas do canvas, para a altura da raquete. No meu jogo está funcionando corretamente, para quem quiser olhar, segue o link:

https://editor.p5js.org/oromeu/sketches/4yg6I3M_1

Estou aberto a qq criticas e opiniões construtivas que possam melhorar o codigo e elogios também caem bem!!!! kkk segue o código:

function verificaColisaoRaqueteBorda ( ) {
      if (yRaquete < 0 )  {
             yRaquete = 0; 
       }
  if (yRaquete  +  90  >  height ) {
            yRaquete  =  310 ;
     }
}

function verificaColisaoRaqueteOponenteBorda ( ) {
    if ( yRaqueteOponente  <  0  )  {
              yRaqueteOponente  =  0; 
      }
  if ( yRaqueteOponente  + 90  >  height ) {
             yRaqueteOponente  =  310;
    }
}

2 respostas

Opa Romeu, tudo ok por aí?

Sobre a sua solução ela é sim totalmente plausível e funciona sim.

A sua lógica de gerar fazer com que a bolinha vá para uma posição especifica quando começar aquele efeito loop de bater na “parede” e na “raquete” foi muito legal e interessante.

Parabéns por pensar em algo desse tipo e compartilhar com os outros estudantes aqui na plataforma.

Deixo como recomendação, dois vídeos de Alura + que explicam explicam sobre como obter máximo proveito do fórum da Alura:

Recomendo, caso se sinta confortável em compartilhar seu conhecimento, interagir com outros estudantes, trocar experiências e fazer networking, que participe do Discord oficial da Alura de alunas e alunos:

Em suma era isso, caso tenha dúvidas ou problemas relacionados ao curso recorra ao fórum!

E mais uma vez parabéns por sua atitude.

Um grande abraço e bons estudos.

Obrigado Renan !!