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

Após inserir a chance de errar, o placar não é mais contado

//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let comprimentoRaquete = 10; 
let alturaRaquete = 80;  
let colidiu = false;

//variáveis do oponente
let xRaqueteOponente = 585
let yRaqueteOponente = 150
let velocidadeYOponente;
let chanceErrar = 0

//velocidade da bolinha
let velocidadexBolinha = 6
let velocidadeyBolinha = 6

//Placar do jogo

let meusPontos = 0
let pontosOponente = 0

//sons do jogo

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();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete(xRaquete, yRaquete)
  movimentaRaquete ()
  //verificaColisaoRaquete()
  verificacolisaoRaquete (xRaquete, yRaquete)
  movimentaRaqueteOponente();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  verificacolisaoRaquete(xRaqueteOponente, yRaqueteOponente);
  incluiPlacar();
  marcaPonto();
  calculaChanceErrar();
}

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, comprimentoRaquete, alturaRaquete);
}

function mostraRaqueteOponente () {
  rect( xRaqueteOponente, yRaqueteOponente, comprimentoRaquete, alturaRaquete);
}

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

if (keyIsDown(DOWN_ARROW)){
  yRaquete += 10;
}
}
function verificaColisaoRaquete () {
if (xBolinha - raio < comprimentoRaquete + xRaquete 
 && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete) { velocidadexBolinha *= -1
                                                         raquetada.play()       
 }
}

function verificacolisaoRaquete (x,y) {
colidiu =
  collideRectCircle(x,y,comprimentoRaquete,alturaRaquete, xBolinha,yBolinha,raio);
  if (colidiu) {
  velocidadexBolinha *= -1
    raquetada.play()
  }
}

function movimentaRaqueteOponente () {
  velocidadeYOponente = yBolinha - yRaqueteOponente - comprimentoRaquete/2 - 30
  yRaqueteOponente += velocidadeYOponente + chanceErrar
}

function incluiPlacar(){
textAlign (CENTER) 
textSize (45)
fill (255)
text (meusPontos, 200, 45)
text (pontosOponente, 400, 45)
}

function marcaPonto (){
 if (xBolinha > 590) {
 meuspontos += 1
   ponto.play()
 }
}
 if (xBolinha < 10) {
 pontosOponente +=1;
   ponto.play()
 }

function calculaChanceErrar (){
if (pontosOponente >= meusPontos) {
    chanceErrar +=1
  if (chanceErrar>= 39){
  chanceErrar = 40
}
}else {
  chanceErrar -= 1
 if (chanceErrar<=35){
  chanceErrar =35
 }
}
}

Após adicionar a chance de Errar, o jogo não está mais marcando pontos no placar, poderiam me dar uma dica do que está errado?

3 respostas

Fala ai Matheus, tudo bem? Como seu código possuí bastante dependencia (outros arquivos .js) fica um pouco complicado para eu simular o problema.

Por conta disso, gostaria de pedir se você consegue compartilhar o link do projeto comigo, assim eu consigo simular o problema por aqui e analisá-lo com mais calma.

Fico no aguardo.

https://editor.p5js.org/shimira/sketches/pA6lGCaXH

Está aí o link do projeto!

solução!

Fala ai Matheus, o problema está na sua função marcaPonto, vamos ver o seguinte trecho de código:

function marcaPonto (){
 if (xBolinha > 590) {
 meuspontos += 1
   ponto.play()
 }
}
 if (xBolinha < 10) {
 pontosOponente +=1;
   ponto.play()
 }

Após corrigir a identação do mesmo temos:

function marcaPonto (){
    if (xBolinha > 590) {
        meuspontos += 1
        ponto.play()
    }
}

if (xBolinha < 10) {
    pontosOponente +=1;
    ponto.play()
}

Repare que o if para verificar os pontos do oponente está fora da função marcaPonto, apenas mova-o para dentro:

function marcaPonto (){
    if (xBolinha > 590) {
        meuspontos += 1
        ponto.play()
    }
    if (xBolinha < 10) {
        pontosOponente +=1;
        ponto.play()
    }
}

Ficando assim o código final.

Espero ter ajudado.