0
respostas

dois bugs, colisão com a raquete do oponente e bola passa traz da raquete

/* Eu optei por nao fazer o procedimento que baixa a biblioteca, então tentei fazer a logica de forma contrária da colisão da minha raquete, no entanto para o quadrante superior direito a bola toca a raquete porem conta-se um ponto. Algumas vezes a bola consegue passar por tráz da minha raquete e faz uma contagem extremamente raqida de pontos, que chega ate 100 ou mais. alguem sabe como resolver esses dois problemas?*/

//variáveis Bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro/2;

//velocidade da bolinha
let velocidadeXBolinha = 5;
let velocidadeYBolinha = 5;

// variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let largRaquete = 12;
let compRaquete = 80;
let cantosRaquete = 4;

// variáveis do oponente
let xRaqueteOponente = 584;
let yRaqueteOponente = 150;
let velocidadeYOponente;

//Placar
let meusPontos = 0;
let pontosOponente = 0;

function setup() {
  createCanvas(600, 400);
}
function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBordas();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaqueteOponente();
  verificaColisaoRaquete();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaqueteOponente();
  incluiPlacar();
  marcaPonto();
    function mostraBolinha(){
      circle(xBolinha,yBolinha ,diametro);
    }
    function movimentaBolinha(){
      xBolinha += velocidadeXBolinha;
      yBolinha += velocidadeYBolinha;
    }
    function verificaColisaoBordas(){
      if(xBolinha + raio > width || xBolinha - raio <0){
        velocidadeXBolinha*=-1;
      }
      if (yBolinha + raio > height || yBolinha -  raio <0){
        velocidadeYBolinha*=-1;
      }
    }
    function mostraRaquete(x,y){
      rect(x,y, largRaquete, compRaquete,cantosRaquete, cantosRaquete,cantosRaquete, cantosRaquete); 
    }
    function movimentaMinhaRaquete(){
      if(keyIsDown (UP_ARROW)){
        yRaquete-=8;
      }
      if(keyIsDown (DOWN_ARROW)){
        yRaquete+=8;  
      }
    }
    function verificaColisaoRaquete(){
      if(xBolinha - raio < xRaquete + largRaquete && yBolinha - raio < yRaquete + compRaquete && yBolinha + raio > yRaquete){
        velocidadeXBolinha*=-1;
      }
    }
    function verificaColisaoRaqueteOponente(){
      if(xBolinha + raio > xRaqueteOponente - largRaquete && yBolinha + raio < yRaqueteOponente + compRaquete && yBolinha + raio >  yRaquete){
      velocidadeXBolinha*=-1;
      }
    }
    function movimentaRaqueteOponente(){
      velocidadeYOponente = yBolinha - yRaqueteOponente - largRaquete /2 -60;
      yRaqueteOponente += velocidadeYOponente
    }
    function incluiPlacar(){
      fill(255);
      text(meusPontos, 278, 26);
      text(pontosOponente, 321, 26)
    }
    function marcaPonto(){
      if(xBolinha>592){
        meusPontos++;
      }
      if(xBolinha < 10){
        pontosOponente++;
      }
    }
}