Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Pontuação, esta contanto de 2 em dois

Fiz e refiz o código porém a bolinha conta de 2 em 2 pontos, mesmo estando no código para contar 1

3 respostas

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(){}

solução!

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.