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)
}