1
resposta

Bug da bolinha atras da raquete (javascript)

Não consigo resolver o bug da bolinha atrás da raquete depois de colocar a Chance de Errar. Já tentei duas opções e o problema persiste. Alguém pode ajudar? Abaixo segue o código...

//variáveis da Bolinha
let xBolinha = 300;
let yBolinha = 180;
let diametro = 18;
let raio = diametro /2;

//velocidade da Bolinha
let velocidadexbolinha = 5;
let velocidadeybolinha = 5;

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;

//variáveis do oponente

let xRaqueteOponente= 585;
let yRaqueteOponente = 150;
let velocidadeYoponente;

//Chances de Errar Oponente
let chanceDeErrar = 0;

let colidiu = false;

//placar do jogo
let meuspontos = 0;
let pontosoponente = 0;

//son do jogo
let ponghiit;
let points;
let sound;

function preload(){
  sound = loadSound("sound.mp3");
  points = loadSound("points.wav");
  ballhiit = loadSound("ballhiit.wav");
}

//Medidas da Raquete
let ComprimentoDaRaquete = 10
let AlturaDaRaquete = 80

function setup() {
  createCanvas(600, 400);
  sound.loop()
;}

function draw() {
  background(0,100,0);
  mostrabolinha();
  MovimentoDaBolinha();
  VerificaColisaoDaborda();
  movimentodaraquete ();
  MostrarRaquete(xRaquete, yRaquete);
  //verificaColisaoComRaquete();
  colisaominharaquetebiblioteca();
  MostrarRaqueteOponente(xRaqueteOponente, yRaqueteOponente);
  MovimentaRaqueteOponente();
  colisaoRaqueteOponentebiblioteca ();
  incluiPlacar ();
  marcaponto ();
  meiodecampo();
}

function mostrabolinha(){
  circle(xBolinha,yBolinha,diametro);
}

function MovimentoDaBolinha(){
  xBolinha += velocidadexbolinha;
  yBolinha += velocidadeybolinha;
}

 function VerificaColisaoDaborda()
{if (xBolinha + raio > width || xBolinha - raio < 0) {
    velocidadexbolinha *= -1;
  }

  if(yBolinha + raio > height || yBolinha - raio < 0){velocidadeybolinha *= -1}
}

function MostrarRaquete (x, y){
    rect(x, y, ComprimentoDaRaquete, AlturaDaRaquete);

}

function MostrarRaqueteOponente (){
    rect(xRaqueteOponente, yRaqueteOponente, ComprimentoDaRaquete, AlturaDaRaquete);

}

function movimentodaraquete (){
  if(keyIsDown(UP_ARROW)){
    yRaquete -=10;
  }

  if (keyIsDown(DOWN_ARROW)){
    yRaquete += 10;
  }
}

function verificaColisaoComRaquete(){
  if (xBolinha - raio < xRaquete + ComprimentoDaRaquete && yBolinha - raio < yRaquete + AlturaDaRaquete &&  yBolinha + raio > yRaquete){
    velocidadexbolinha *= -1 

  }
}

function colisaominharaquetebiblioteca(){

colidiu =
collideRectCircle(xRaquete,yRaquete,ComprimentoDaRaquete,AlturaDaRaquete, xBolinha, yBolinha,raio);
  if(colidiu){ velocidadexbolinha *=-1;
              ballhiit.play();
             }
}

function colisaoRaqueteOponentebiblioteca(){

colidiu =
collideRectCircle(xRaqueteOponente,yRaqueteOponente,ComprimentoDaRaquete,AlturaDaRaquete, xBolinha, yBolinha,raio);
  if(colidiu){ velocidadexbolinha *= -1;
              ballhiit.play();
             }
}

function MovimentaRaqueteOponente (){
  velocidadeYoponente = yBolinha -yRaqueteOponente -ComprimentoDaRaquete /2 -30
  yRaqueteOponente += velocidadeYoponente + chanceDeErrar
  calculaChanceDeErrar();

  function calculaChanceDeErrar(){
 if(pontosoponente >= meuspontos){chanceDeErrar +=1
 if (chanceDeErrar >= 39) {chanceDeErrar = 40}                                } 
  else { chanceDeErrar -=1
 if (chanceDeErrar <= 35){
   chanceDeErrar = 35
  }
 }
}

}



 function bolinhaNaoFicaPresa(){
    if (XBolinha - raio < 0){
    XBolinha = 23
    }
}

function incluiPlacar (){
  stroke(255)
  textAlign(CENTER);
  textSize(15);
  fill(color(75,0,130));
  rect(150, 10,40, 20);
  fill(255);
  text(meuspontos,170, 26);
  fill(color(75,0,130));
  rect(450,10,40,20);
  fill(255);
  text (pontosoponente, 470, 26);
}

function marcaponto(){
  if (xBolinha > 590){
    meuspontos += 1; 
    points.play();
  }
  if (xBolinha < 10) {
    pontosoponente += 1;
    points.play();
  }
}

function meiodecampo(){
  line(310,580, 305, 3)
}
1 resposta

Olá, Thays! Como você está?

Desculpe a demora em responder você!

Esse bug da bolinha presa na raquete realmente acontece no jogo e alguns alunos sugeriram uma solução para o problema. Olha só:

Atividade Bolinha presa na raquete

Fico à disposição em caso de dúvidas.

Um abraço e bons estudos!