2
respostas

Logica do pontos não está funcionando

Seque meu que está disposto igual ao da aula, mas não marca pontos.

//Variaveis da bolinha let xBol = 300;let yBol = 200; let diametro = 30; let raio = diametro / 2;

//Velocidade da bolinha let velXBol = 6; let velYBol = 6;

//Variaveis das raquetes let xRaq = 5; let yRaq = 150; let raqComp = 10; let raqLarg = 90;

//raquete do oponente let xRaqOp = 585; let yRaqOp = 150; let velYOp;

//pontuação do game let meusPontos = 0; let pontosOponente = 0;

//colisão cominidade let colidiu = false;

function setup() { createCanvas(600, 400); }

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaq , yRaq); mostraRaquete(xRaqOp , yRaqOp); movimentaMinhaRaquete(); //verificaColisaoRaquete(); colisaoRaqueteBiblioteca(xRaq, yRaq); colisaoRaqueteBiblioteca(xRaqOp, yRaqOp); movimentaRaqueteOponente(); incluirPlacar(); marcaPonto(); }

function mostraBolinha(){ circle(xBol , yBol, diametro); }

function movimentaBolinha(){ xBol += velXBol; yBol += velYBol; }

function verificaColisaoBorda(){ if (xBol + raio > width || xBol - raio < 0 ){ velXBol *= -1; } if (yBol + raio> height || yBol - raio < 0){ velYBol *= -1; } } function mostraRaquete(x , y) { rect(x, y, raqComp, raqLarg); }

function movimentaMinhaRaquete(){ if(keyIsDown(UP_ARROW)){ yRaq -= 10 } if(keyIsDown(DOWN_ARROW)){ yRaq += 10 } } function verificaColisaoRaquete(){ if(xBol - raio < xRaq + raqComp && yBol - raio < yRaq + raqLarg && yBol + raio > yRaq) velXBol *= -1; } function colisaoRaqueteBiblioteca(x , y){ colidiu = collideRectCircle(x, y, raqComp, raqLarg, xBol, yBol, raio); if(colidiu){ velXBol *= -1; } } function movimentaRaqueteOponente(){ velYOp = yBol - yRaqOp - raqComp / 2 - 150 ; yRaqOp += velYOp; } function incluirPlacar(){ fill(255); text(meusPontos, 278, 26); text(pontosOponente, 321, 26); } function marcaPonto(){ if(xBol > 590){ meusPontos += 1; }

if(xBol < 10){ pontosOponente += 1; } }

2 respostas

Também estou com o mesmo problema

Olá, Vinícius, na aula, o exemplo foi com a bolinha de diâmetro 15. No seu projeto, o diâmetro é 30 (seu raio é 15). Então, precisa ajustar as condições da função marcaPonto assim:

function marcaPonto(){ 
  if(xBol > 585){ 
    meusPontos += 1; 
  }

  if(xBol < 15){
    pontosOponente += 1; 
  } 
}

Como o seu raio era de 15, a bolinha nunca atingia x > 590, pois o ponto x fica no centro da bolinha. Ou seja, o raio 15 é maior que a diferença entre o limite da condição if e a largura da borda (600 - 590 = 10). O mesmo raciocínio é válido para o x mínimo (segundo if).

Espero ter ajudado. Bons estudos!