Consegui adicionar os sons no jogo, estão funcionando normalmente, porém o som da raquete toca sem parar infinitamente, como se a bolinha estivesse encostando na raquete. https://editor.p5js.org/DEV007/sketches/RNEwmigYQ
//variáveis da bolinha let xBolinha = 300; let yBolinha = 200; let dBolinha = 20; let raio = dBolinha / 2;
//variáveis da velocidade da bolinha let velocidadeXBolinha = 10; let velocidadeYBolinha = 1;
//variáveis da raquete1 let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 12; let raqueteAltura = 70;
//variáveis do oponente let xRaqueteDoOponente = 585; let yRaqueteDoOponente = 150;
//Placar do jogo let meusPontos = 0; let oponentePontos = 0;
//Sons do jogo let ponto; let trilha; let raquetada;
function preload(){ trilha = loadSound("trilha.mp3"); raquetada = loadSound("raquetada.mp3"); ponto = loadSound("ponto.mp3"); }
let colidiu = false;
//seta as dimensões do background function setup() { createCanvas(600, 400); trilha.loop(); }
//Define a cor do background e chama as funções utilitárias function draw() { background(0); mostraBolinha(); movimentaBolinha(); checkColisaoBorda(); mostraRaquete(xRaquete,yRaquete); movimentaMinhaRaquetea(); movimentaMinhaRaqueteb(); verificaColisaoRaquete(); movimentaMinhaRaquetea(); movimentaMinhaRaqueteb(); verificaColisaoRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); verificaColisaoRaquete(xRaqueteDoOponente, yRaqueteDoOponente); mostraRaquete(xRaqueteDoOponente,yRaqueteDoOponente); movimentaRaqueteDoOponente(); incluiPlacar(); marcarPonto();
}
//Função criada para desenhar e mostrar a bolinha function mostraBolinha () { circle(xBolinha,yBolinha, dBolinha); }
//Função criada para definir os parâmetros de movimentação da bolinha function movimentaBolinha () { xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }
//Função criada para checar se a extremidade da bolinha toca na borda da tela. Quando toca, inverte a direção function checkColisaoBorda(){ if (xBolinha + raio > width || xBolinha - raio < 0) { velocidadeXBolinha *= -1; } if (yBolinha + raio > height || yBolinha - raio < 0) { velocidadeYBolinha *= -1; } }
//Função criada para mostrar e definir parâmetros da raquete function mostraRaquete(x,y){ rect(x, y, raqueteComprimento, raqueteAltura); }
function movimentaMinhaRaquetea(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 10; } }
function movimentaMinhaRaqueteb(){ if (keyIsDown(DOWN_ARROW)){ yRaquete += 10; } }
function verificaColisaoRaquete() { if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1; raquetada.play(); } }
function verificaColisaoRaquete(x, y) { colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); if (colidiu) { velocidadeXBolinha *= -1; raquetada.play(); } } function movimentaRaqueteDoOponente(){ yRaqueteDoOponente = (yBolinha - raqueteAltura /2) - 50 }
function incluiPlacar(){ stroke(255); textAlign(CENTER); textSize(16); fill(color(255,140,0)); rect(150,10,40,20); fill(255); text(meusPontos, 170,26); fill(color(255,140,0)); rect(450,10,40,20); fill(255); text(oponentePontos, 470,26); }
function marcarPonto(){ if(xBolinha > 590){ meusPontos += 1; ponto.play(); } if(xBolinha < 10){ oponentePontos += 1; ponto.play(); } }