Guilherme boa tarde, segui o projeto no P5.JS como ia explicando, porém, a function verificaColisaoRaquete() e function verificaColisaoRaqueteAdversario(), fiz direto no programa como mostrou no início, antes de baixar um código alternativo do forum do P5.JS. Contudo, estou tendo algumas dificuldades no código do jogo. let velocidadeXBolinha = 5; let velocidadeYBolinha = 5; Não consigo aumentar a velocidade, porque a bolinha passa direto pela raquete do adversario, e entra em loop de pontos. function movimentaRaqueteAdversario() Nessa mesmo aumentando as chances de erro, o adversario nunca erra, ae se aumento muito, ele nunca acerta. Pode verificar onde estou errando nessas partes, por favor?
//Códico completo abaixo;
let xBolinha = 300; let yBolinha = 200; let diametroBolinha = 25; let raioBolinha = diametroBolinha/2; let velocidadeXBolinha = 5; let velocidadeYBolinha = 5; let xRaquete = 5; let yRaquete = 150; let larguraRaquete = 5; let alturaRaquete = 80; let xRaqueteAdversario = 590; let yRaqueteAdversario = 150; let chanceDeErrar = 0; let velocidadeYAdversario; let meusPontos = 0; let pontosAdversario = 0; let raquetada; let ponto; let trilha;
function preload() { trilha = loadSound ("trilha.mp3"); ponto = loadSound ("ponto.mp3"); raquetada = loadSound ("raquetada.mp3"); }
function setup() { createCanvas(600, 400); trilha.loop(); }
function draw() { background(0); mostraBolinha(); velocidadeBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); verificaColisaoRaquete(); mostraRaquete(xRaqueteAdversario, yRaqueteAdversario); movimentaRaqueteAdversario(); verificaColisaoRaqueteAdversario(); incluiPlacar(); marcaPonto(); }
function mostraBolinha() { circle(xBolinha, yBolinha, diametroBolinha); }
function velocidadeBolinha() { xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }
function verificaColisaoBorda() { if(xBolinha + raioBolinha > width || xBolinha - raioBolinha < 0) { velocidadeXBolinha *= -1; } if(yBolinha + raioBolinha > height || yBolinha - raioBolinha < 0) { velocidadeYBolinha *= -1; } }
function mostraRaquete(x, y) { rect(x,y,larguraRaquete,alturaRaquete); }
function movimentaMinhaRaquete() { if(keyIsDown(UP_ARROW)) { yRaquete -= 10; } if(keyIsDown(DOWN_ARROW)) { yRaquete += 10; } }
function verificaColisaoRaquete() { if(xBolinha - raioBolinha < xRaquete + larguraRaquete && yBolinha - raioBolinha < yRaquete + alturaRaquete && yBolinha + raioBolinha > yRaquete) { velocidadeXBolinha *= -1; raquetada.play(); } }
function movimentaRaqueteAdversario() { velocidadeYAdversario = (yBolinha - yRaqueteAdversario - larguraRaquete / 2) - 30; yRaqueteAdversario += velocidadeYAdversario; calculaChanceDeErrar() }
function calculaChanceDeErrar() { if (pontosAdversario >= meusPontos) { chanceDeErrar += 1 if (chanceDeErrar >= 39){ chanceDeErrar = 40 } } else { chanceDeErrar -= 1 if (chanceDeErrar <= 35){ chanceDeErrar = 35 } } }
function verificaColisaoRaqueteAdversario() { if(xBolinha + raioBolinha > xRaqueteAdversario + larguraRaquete && yBolinha - raioBolinha < yRaqueteAdversario + alturaRaquete && yBolinha + raioBolinha > yRaqueteAdversario) { velocidadeXBolinha *= -1; raquetada.play(); } }
function incluiPlacar () { stroke(255); textAlign(CENTER); textSize(16); fill(color(255, 140, 0)); rect(130, 10, 40, 20); fill(255); text(meusPontos, 150, 26); fill(color(255, 140, 0)); rect(430, 10, 40, 20); fill(255); text(pontosAdversario, 450, 26); }
function marcaPonto() { if(xBolinha + raioBolinha > 599) { meusPontos += 1; ponto.play(); } if(xBolinha - raioBolinha < 1) { pontosAdversario += 1; ponto.play(); } }