Terminei o curso e quis fazer umas melhorias no game, adicionando um vencedor e uma mensagem na tela seguido de musica quando alguém ganhasse, porém quando aperto play para testar o P5 trava completamente, não sei o porque ou qual seria o comando que o esta fazendo bugar sem parar, o código no momento está assim (vou tentar trocar o alert por um texto normal e ver se resolve pois os travamentos começaram depois que o primeiro alerto entrou em loop infinito):
let xBolinha = 300;
var yBolinha = 200;
let diametro = 20;
let raio = diametro / 2
let velocidadeXbolinha = 5;
let velocidadeYbolinha = 5;
let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 06;
let raqueteAltura = 100;
let xRaqueteOponente = 590;
let yRaqueteOponente = 150;
let velocidadeYOponente;
let colidiu = false;
let meusPontos = 0
let pontosOponente = 0
let raquetada;
let somDoPonto;
let trilhaSonora;
let vitoria;
let derrota;
let fimFim = 0
let chanceDeErrar;
function preload(){
trilha = loadSound("trilha.mp3");
somDoPonto = loadSound("ponto.mp3");
raquetada = loadSound("raquetada.mp3");
vitoria = loadSound("X2Download.com - Happy Wheels victory green screen (128 kbps).mp3");
derrota = loadSound("sad_naruto.mp3");
}
function setup() {
createCanvas(600, 400);
trilha.loop();
}
function draw() {
background(0);
criaBolinha();
mostraRaquete(xRaquete, yRaquete);
movimentaBola();
verificaColisaoRaquete(xRaquete, yRaquete);
verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente);
colisor();
movimentaMinhaRaquete();
mostraRaquete(xRaqueteOponente, yRaqueteOponente);
movimentaRaqueteOponente();
incluiPlacar();
marcaPonto();
paraLoop();
fimDeJogo();
}
function colisor(){
if (xBolinha + raio > width || xBolinha - raio < 0){
velocidadeXbolinha *= -1
}
if (yBolinha + raio > height || yBolinha - raio <0){
velocidadeYbolinha *= -1
}
}
function movimentaBola(){
xBolinha += velocidadeXbolinha
yBolinha += velocidadeYbolinha
}
function criaBolinha(){
circle(xBolinha, yBolinha, diametro);
}
function mostraRaquete(x, y){
rect(x, y, raqueteComprimento, raqueteAltura);
}
function movimentaMinhaRaquete(){
if (keyIsDown(UP_ARROW)){
yRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)){
yRaquete +=10
}
}
function verificaColisaoRaquete(x, y) {
colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
if (colidiu){
velocidadeXbolinha *= -1;
raquetada.play();
}
}
function calculaChanceDeErrar() {
if (pontosOponente >= meusPontos) {
chanceDeErrar += 1
if (chanceDeErrar >= 39){
chanceDeErrar = 40
}
} else {
chanceDeErrar -= 1
if (chanceDeErrar <= 35){
chanceDeErrar = 35
}
}
}
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento/2 - 100;
yRaqueteOponente += velocidadeYOponente;
calculaChanceDeErrar();
}
function incluiPlacar(){
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(pontosOponente, 470, 26);
}
function marcaPonto(){
if (xBolinha >590){
meusPontos += 1;
somDoPonto.play();
} if (xBolinha <10){
pontosOponente += 1;
somDoPonto.play();
}
}
function paraLoop(){
if (meusPontos <=15){
trilha.stop();
} if (pontosOponente <= 15){
trilha.stop();
}
}
function fimDeJogo(){
while (fimFim <= 1){
if (meusPontos > 15){
alert("Player 1 ganhou!");
vitoria.play();
fimFim++
}
if (pontosOponente > 15){
alert("Você Perdeu! :c");
derrota.play();
fimFim++
}
}
}
link do game: https://editor.p5js.org/Ryuuji_Staz/sketches/Wmi4WfWKu