Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Copiei os códigos mas os pontos do oponente não contabilizam

estarei enviando uma cópia do link do pong para que vcs me ajudem se estiver algum erro,agradeço

https://editor.p5js.org/xavierszz/sketches/5zFNBb7Yy

1 resposta
solução!

Oi Marcelo! Tudo bem por aí?

Os pontos não estão contabilizando pois algumas condições estão faltando na sua função de colisão da bolinha com a raquete. Sua função está assim:

  function verificarColisaoRB(){
  if (xBolinha - raio < xRaquete + raqcomprimento){
    velocidadexbolinha *= -1;
  }
  }

E isso deixa de levar em consideração o tamanho da raquete. É como se toda a abrangência do espaço da raquete no eixo y fosse considerado, e então a bolinha nunca colide com a borda do canvas (que é o que marca um ponto).

Gif do jogo pong. A bolinha se move apenas na horizontal. A raquete do lado esquerdo está na parte de baixo da tela, mas a bolinha não ultrapassa o limite do tamanho da raquete, mesmo estando na parte central da tela, e nunca colide com a parede. No lado direito, a raquete do oponente está no meio da tela e a bolinha a ultrapassa.

Perceba que a colisão com a raquete do oponente também não ocorre. A bolinha a ultrapassa.

Para resolver, adicione algumas condições na função verificarColisaoRB:

  function verificarColisaoRB(){
    if (xBolinha - raio < xRaquete + raqcomprimento
        && yBolinha - raio < yRaquete + raqlargura
        && yBolinha + raio > yRaquete) {
        velocidadexbolinha *= -1;
    }
} 
  • Em xBolinha - raio < xRaquete + raqueteComprimento, analisamos a parte esquerda da bolinha e a colisão com a raquete;
  • Em yBolinha - raio < yRaquete + raqueteAltura comparamos a parte superior da bolinha com a parte inferior da raquete;
  • Em yBolinha + raio > yRaquete comparamos a parte inferior da bolinha com a parte superior da raquete.

Na função da colisão com a raquete do oponente, faça as seguintes alterações:

  function verificarcolisaoop(){
       if (xBolinha + diametro > xRaqueteop + raqcomprimento 
        && yBolinha - raio < yRaquete + raqlargura
        && yBolinha + raio > yRaquete){
    velocidadexbolinha *= -1;
      }   
}

Agora as duas colisões estão acontecendo como esperado!

O oponente não vai mais marcar pontos, pois ele nunca erra. Isso será resolvido nessa aula aqui:

Espero ter ajudado, Marcelo! Estou a disposição.

Forte abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!