Quando o pong começa, a bola fica presa entre a raquete e a parede quicando entre as duas sem parar; se eu mudo o "raqueteComprim / 2 - 30" pra -20 para de acontecer, mas ele sempre erra, se eu boto -40 ele sempre acerta
//Variáveis do círculo.
let xCirculo = 380; //Posição X inicial do círculo.
let yCirculo = 250; //Posição Y inicial do círculo.
let diamCirculo = 18; //Diâmetro do círculo.
let raioCirculo = diamCirculo / 2 ; //Raio do círculo.
//Velocidade do círculo.
let xSpeedCirculo = 8; //Velocidade do movimento X do círculo.
let ySpeedCirculo = 8; //Velocidade do movimento Y do círculo.
//Variáveis da raquete.
let xRaquete = 8; //Posição X da raquete.
let yRaquete = 175; //Posição Y da raquete.
let raqueteComprim = 10; //Comprimento da raquete.
let raqueteAlt = 100; //Altura da raquete.
//Variáveis do oponente
let xRaqueteDoOponente = 780; //Posição X da raquete do oponente.
let yRaqueteDoOponente = 175; //Posição Y da raquete do oponente.
let velocidadeYOponente;
//Placar do jogo
let minhaPontuaçao = 0; //Meus pontos.
let oponentePontuaçao = 0; //Pontos do oponente.
let chanceDeErrar = 0;
//Sons do jogo
let raquetada;
let pontuar;
let trilhaSonora;
let colisao = false
function preload(){
trilhaSonora = loadSound("trilha.mp3");
pontuar = loadSound("ponto.mp3");
raquetada = loadSound("raquetada.mp3");
}
function setup() {
createCanvas(800, 500);
trilhaSonora.loop();
}
function draw() {
background(0);
mostraCirculo();
movimentoCirculo();
colisaoDaBorda();
mostraRaquete(xRaquete, yRaquete);
movimentoRaquete();
//colisaoRaquete();
colisaoDasRaquetesBiblioteca(xRaquete, yRaquete);
mostraRaquete(xRaqueteDoOponente, yRaqueteDoOponente);
movimentoRaqueteDoOponente();
colisaoDasRaquetesBiblioteca(xRaqueteDoOponente, yRaqueteDoOponente);
incluirOsPontos();
marcarAPontuaçao();
calculaChanceDeErrar();
}
function mostraCirculo(){
circle(xCirculo, yCirculo, diamCirculo);
}
function movimentoCirculo(){
xCirculo += xSpeedCirculo;
yCirculo += ySpeedCirculo;
}
function colisaoDaBorda(){
if (xCirculo + raioCirculo> width ||
xCirculo - raioCirculo< 0){
xSpeedCirculo *= -1;
}
if (yCirculo + raioCirculo> height ||
yCirculo - raioCirculo < 0){
ySpeedCirculo *= -1;
}
}
function mostraRaquete(x, y) {
rect(x, y, raqueteComprim, raqueteAlt);
}
function movimentoRaquete() {
if (keyIsDown(UP_ARROW)) {
yRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)) {
yRaquete +=10;
}
}
function colisaoRaquete() {
if (xCirculo - raioCirculo < xRaquete + raqueteComprim
& yCirculo - raioCirculo < yRaquete + raqueteAlt
& yCirculo + raioCirculo > yRaquete) {
xSpeedCirculo *= -1;
raquetada.play();
}
}
function colisaoDasRaquetesBiblioteca(x, y){
colidiu = collideRectCircle(x, y,raqueteComprim,raqueteAlt,xCirculo,yCirculo,raioCirculo);
if (colidiu){
xSpeedCirculo *= -1;
raquetada.play();
}
}
function movimentoRaqueteDoOponente(){
velocidadeYOponente = yCirculo - yRaqueteDoOponente - raqueteComprim / 2 - 30
yRaqueteDoOponente += velocidadeYOponente + chanceDeErrar
calculaChanceDeErrar()
}
function calculaChanceDeErrar() {
if (oponentePontuaçao >= minhaPontuaçao) {
chanceDeErrar += 1
if (chanceDeErrar >= 39){
chanceDeErrar = 40
}
} else {
chanceDeErrar -= 1
if (chanceDeErrar <= 35){
chanceDeErrar = 35
}
}
}
function incluirOsPontos(){
textAlign(CENTER);
textSize(25);
stroke(9999);
fill(0,0,205);
rect(325, 8, 50, 35);
stroke(9999);
fill(0,0,205);
rect(425, 8, 50, 35);
fill(9999);
text(minhaPontuaçao, 350, 34);
fill(9999);
text (oponentePontuaçao, 450, 34);
}
function marcarAPontuaçao(){
if (xCirculo > 791){
minhaPontuaçao += 1;
pontuar.play();
}
if (xCirculo < 9){
oponentePontuaçao += 1;
pontuar.play();
}
}