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

MEU PLACAR NÃO MARCA PONTOS

Olá, meu placar não está marcando os pontos, já mudei o diametro da bolinha e continua sem marcar, se pudererm me ajudar agradeço muito

let xBolinha = 300; let yBolinha = 200; let diametro = 25; let raio = diametro /2;

let velocidadeXBolinha = 6 ; let velocidadeYBolinha = 6;

//variaveis raquete let xRaquete = 5; let yRaquete = 150; let comprimentoraq = 10; let raqaltura = 90; let colidiu = false;

//placar do jogo let meusPontos = 0; let pontosOp = 0;

//variaveis raquete oponente let xRaqueteOp = 585; let yRaqueteOp = 150 ; let velocidadeyOponente;

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

function draw() { //desenho background(0);// desenha o fundo mostraBolinha(); // desenha bolinha movimentaBolinha();// movimenta bolinha verificaColisão(); // verifica colisão bolinha nas bordas mostraRaquete(xRaquete,yRaquete); // desenha raquete movRaquete(); // movimenta raquete //colisaoRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); mostraRaquete(xRaqueteOp, yRaqueteOp); // mostra raquete oponente movimentaRaqueteOp(); verificaColisaoRaquete(xRaqueteOp,yRaqueteOp); incluiPlacar(); marcaPonto();

function mostraBolinha(){ circle(xBolinha, yBolinha, diametro) }

function movimentaBolinha(){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha;

}

function verificaColisão(){ 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, comprimentoraq, raqaltura);

}

function movRaquete(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 10;

} if (keyIsDown(DOWN_ARROW)){ yRaquete += 10; } }

function colisaoRaquete(){ if(xBolinha - raio < xRaquete + comprimentoraq && yBolinha - raio < yRaquete + raqaltura && yBolinha + raio > yRaquete) { velocidadeXBolinha *= -1; } } function verificaColisaoRaquete(x,y){ colidiu = collideRectCircle(x,y, comprimentoraq, raqaltura, xBolinha, yBolinha, raio); if (colidiu){ velocidadeXBolinha *= -1; }

} function movimentaRaqueteOp(){

velocidadeyOponente = yBolinha - yRaqueteOp - comprimentoraq /2 -30 yRaqueteOp += velocidadeyOponente } function incluiPlacar(){ fill(255) text(meusPontos, 278,26) text(pontosOp, 321,26) } function marcaPonto(){ if (xBolinha > 590){ meusPontos += 1; } } if (xBolinha < 10){ pontosOp += 1; }

4 respostas

Oi, João! Tudo beleza?

Dei uma olhadinha aqui no seu código.

Se você aumentar a abrangência da posição da bolinha na função marcaPonto(), o placar funcionará como é esperado. Assim:

function marcaPonto(){

  if (xBolinha > 585){ 
    meusPontos += 1; 
  }  
  if (xBolinha < 15){ 
    pontosOp += 1; 
  }
}

Percebi também que o oponente nunca está errando, esse é um bug comum. Na aula 5, atividade 7, o instrutor faz algumas sugestões para aumentar a chance de a raquete oponente errar e o jogo ficar mais interessante!

Ah! Quando precisar compartilhar um código do p5.js, você pode copiar o link no menu file na parte superior direita da tela, e selecionando a opção share. Copie o link da opção edit, na janela que abrirá.

Espero que tenha dado tudo certo!

Continue praticando, João! Você está indo muito bem e seu jogo está ficando super legal. Quando tiver dúvidas, recorra ao fórum e estaremos por aqui para te auxiliar.

Forte abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.

Olá, fiz conforme voce me orientou porem o problema persiste, estou fazendo algo errado?

https://editor.p5js.org/joaoricardo.rik/sketches/TNRud72sj

observe que os pontos não estão contando corretamente. Obrigado.

Oi João! Tudo bem?

Obrigada por mandar o link!

Percebi agora que você fechou a função antes do segundo if! A função draw() também foi fechada no lugar errado, após a função verificaColisão(). Veja, duas chaves estão fechando uma após a outra logo após a primeira condição:

function marcaPonto(){
if (xBolinha > 590){
meusPontos += 1;
}
} if (xBolinha < 10){
pontosOp += 1;
}

Assim, os pontos do oponente não serão considerados quando a função for executada. E os meusPontos não estão ainda sendo contabilizados pelo bug do erro da raquete do oponente, que eu comentei antes.

Testa aí e me conta se deu certo!

Abração.

solução!

Deu certo agora, muito obrigado!