Fiz e refiz o código porém a bolinha conta de 2 em 2 pontos, mesmo estando no código para contar 1
Fiz e refiz o código porém a bolinha conta de 2 em 2 pontos, mesmo estando no código para contar 1
oi kimberly, sem ver o codigo que você fez fica dificio saber o por que de estar acontecendo o bug.
Desculpa, achei que tinha colocado junto
//varáveis da bolinha let xBolinha=300; let yBolinha=200; let diametro=20; let raio=diametro/2;
//velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha=6;
//variaveis da raquete let xRaquete=5 let yRaquete=150 let raqueteComprimento=7; let raqueteAltura=80;
//variáveis do oponente let xRaqueteOponente=585; let yRaqueteOponente=150; let velocidadeYOponente;
//placar do jogo let meusPontos=0; let pontosDoOponente=0;
function setup() { createCanvas(600, 400); }
function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete,yRaquete); movimentaMinhaRaquete(); verificaColisaoRaquete(xRaqueteOponente,yRaqueteOponente); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente(); verificaColisaoRaquete(xRaqueteOponente,yRaqueteOponente); incluiPlacar(); marcaPonto(); }
function mostraBolinha(){ circle(xBolinha,yBolinha,diametro); }
function movimentaBolinha(){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }
function verificaColisaoBorda(){ if (xBolinha + raio >width || xBolinha - raio <0){ velocidadeXBolinha *= -1; }
if(yBolinha + raio> height || yBolinha - raio<0){ velocidadeYBolinha *= -1; } }
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){ if (xBolinha - raio< x + raqueteComprimento && yBolinha -raio < y + raqueteAltura && yBolinha + raio > y){ velocidadeXBolinha *=-1; } }
function movimentaRaqueteOponente() { velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30; yRaqueteOponente += velocidadeYOponente }
function incluiPlacar(){ fill(255) text(meusPontos, 278,26); text(pontosDoOponente, 321,26); }
function marcaPonto(){}
Não tenho certeza, mas provavelmente o bug deve estar ocorrendo porque a bolinha esta passando pelo eixo “x” onde a função identifica o ponto duas vezes uma na ida e outra na volta, você consegue solucionar esse bug alterando o eixo “x” onde a função marcaPonto identifica o ponto.
Seque o exemplo da forma que eu usei:
link do p5.js: https://editor.p5js.org/carlosbarros723513/sketches/5u72YFe5k
codigo da função marca ponto:
function marcaPonto(){
if ( xBolinha - raioBolinha < 1){
placarRaquete2 += 1; ponto.play()
}
if ( xBolinha + raioBolinha > 599){
placarRaquete1 += 1; ponto.play()
}
}
exemplo do bug:
link p5.js: https://editor.p5js.org/carlosbarros723513/sketches/-g1ZoAXXY
function marcaPonto(){
if ( xBolinha - raioBolinha < 6){ pontosRaquete += 1};
if ( xBolinha + raioBolinha > 584 ){ pontosRaquete2 += 1}
}
`
Obs.: o primeiro link tem alterações que eu fiz para tentar melhorar o código do jogo.
espero ter ajudado.