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

A bolinha está entrando na parede

Segui o passo a passo como na aula, com algumas pequenas alterações para deixar mais fácil para o meu entendimento. O único problema é que de vez em quando a bolinha parece entrar nas paredes laterais atrás das raquetes e ficam marcando pontos infinitos. Ocasionalmente, ela acaba retornando, porém deixa o placar absurdo.

//Variáveis da Bolinha
var xBolinha = 300;
var yBolinha = 200;
var bolinha = 30;
var raio = 15;

//Velocidade da Bolinha
var velocidadeXBolinha = 8;
var velocidadeYBolinha = 8;

//Raquete do Jogador 1
var larguraRaquete = 12;
var alturaRaquete = 100;  
var xRaqueteJogador1 = 0;
var yRaqueteJogador1 = 150;

//Raquete do Jogador 2/Oponente
var larguraRaquete2 = 12;
var alturaRaquete2 = 100;
var xRaqueteJogador2 = 588;
var yRaqueteJogador2 = 150;
var velocidadeJogador2;

//Placar do Jogo
var pontosJogador1 = 0;
var pontosJogador2 = 0;

function setup() {

  createCanvas(600, 400);

}

function draw() {

  background(000);
  mostraBolinha();
  movimentaBolinha();
  verificaColisao();
  raqueteJogador1();
  raqueteJogador2();
  movimentaRaquete1();
  verificaColisaoRaquete1();
  verificaColisaoRaquete2();
  movimentaRaquete2();
  incluiPlacar();
  marcaPonto();

}

function mostraBolinha(){

  circle(xBolinha,yBolinha,bolinha);

}

function movimentaBolinha(){

  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;

}

function verificaColisao(){

   if (xBolinha > (600 - raio)  || xBolinha < (0 + raio)) {

    velocidadeXBolinha *= -1;

  }

  if (yBolinha > (height - raio) || yBolinha < (0 + raio)) {

    velocidadeYBolinha *= -1;

  }

}

function raqueteJogador1(){

  rect(xRaqueteJogador1,yRaqueteJogador1,larguraRaquete,
       alturaRaquete);

}

function raqueteJogador2(){

  rect(xRaqueteJogador2,yRaqueteJogador2,larguraRaquete2,
       alturaRaquete2);

}

function movimentaRaquete1(){

  if(keyIsDown(UP_ARROW)) {

    yRaqueteJogador1 -= 10;

  }

  if(keyIsDown(DOWN_ARROW)) {

    yRaqueteJogador1 += 10;

  }

}

function verificaColisaoRaquete1(){

  if(xBolinha - raio < xRaqueteJogador1 + larguraRaquete && 
     yBolinha - raio < yRaqueteJogador1 + alturaRaquete && yBolinha + raio      > yRaqueteJogador1 ) {

    velocidadeXBolinha *= -1

  }

}

function verificaColisaoRaquete2(){

  if(xBolinha + raio > xRaqueteJogador2 && yBolinha - 
     raio > yRaqueteJogador2 && yBolinha + raio < yRaqueteJogador2 +            alturaRaquete2 ) {

    velocidadeXBolinha *= -1

  }

}

function movimentaRaquete2(){

  velocidadeJogador2 = yBolinha - yRaqueteJogador2 - yRaqueteJogador2 / 1.3;

  yRaqueteJogador2 += velocidadeJogador2;

}

function incluiPlacar(){

  fill(255);
  text(pontosJogador1,278,26);
  text(pontosJogador2,321,26);

}

function marcaPonto(){

  if(xBolinha > 599 - raio){

    pontosJogador1 += 1;

  }

  if(xBolinha <1 + raio){

    pontosJogador2 += 1;

  }

}

1 resposta
solução!

Olá, Demian! Espero que esteja bem!

Temos uma postagem aqui no fórum onde um aluno desenvolveu uma lógica para evitar que a bolinha fique presa na raquete

Dê uma olhada e pode ser que te ajude com esse problema!

Espero ter ajudado!

Um abraço e bons estudos