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

Colisão de borda nas raquetes

O jogo está praticamente pronto e ficou bem interessante, exceto pelo fato de que não consigo pontuar contra o computador (vide pergunta anterior no fórum).

Porém, gostaria de ajuda para implementar uma "melhoria" que eu pensei. Gostaria de que as raquetes não fossem além das bordas do jogo quando subissem ou descessem.

Tentei implementar isso, baseados nos padrões de colisão da bolinha com a borda, mas não tive muito sucesso. Alguém poderia por gentileza me direcionar o melhor caminho para fazer isso?

Obrigado!

3 respostas

Fernando, boa tarde!

Você pode usar uma ideia, parecida com essa: Se ((x + altura) > bordaInferiorX) então não pode descer mais, caso contrário é possível.

Isso serve para a borda inferior, já na borda superior, não é necessário somar o x.

Espero ter ajudado e bons estudos!

Além disso, criamos uma atividade que permite o erro do oponente! https://cursos.alura.com.br/course/pong-javascript/task/61977

solução!

Fala Fernando, como vai?

Adicionamos uma atividade no curso, possibilitando o erro da raquete do oponente.

Você pode encontrar neste link.

Em relação as raquetes não sairem da tela, começaria com a minha raquete primeiro desenvolvendo a seguinte ideia:

  • No momento que verificamos se as teclas seta para cima ou para baixo estão pressionada, adicione um && verificando a se a posição yRaquete está no limite da tela, como descrito no código abaixo:
function movimentaraquete(){
  if (keyIsDown(UP_ARROW) && yRaquete > 0)
  {yRaquete -= 10;}
  if (keyIsDown(DOWN_ARROW) && yRaquete < 310)
  {yRaquete += 10;}
  }
  • Já na raquete do oponente, sugiro o seguinte código, onde verifico se a raquete do oponente está nos limites da tela, tanto inferior como superior, e se a bolinha está subindo ou descendo:
function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - raquetecomprimento /2 -30;
  if (yRaqueteOponente < 2 || yRaqueteOponente > 308 && yBolinha > 330 || yBolinha < 38){

  } else{
    yRaqueteOponente += velocidadeYOponente + chanceDeErrar
    calculaChanceDeErrar()  
  }
}

Espero que te ajude Fernando.

: )