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

Só marca o primeiro ponto

Meu placar marca o primeiro ponto, depois não soma os pontos seguintes, permanece sempre com 1 ponto. Não consigo encontrar o motivo.

//Valores da bolinha
let xBolinha=300;
let yBolinha=200;
let diametro=20;
let raio = diametro/2;

//Velocidade da bolinha  
let velocidadeXBolinha=6;
let velocidadeYBolinha=6;

//Valores da raquete
let larguraRaquete = 10;
let alturaRaquete = 50;

//Raquete direita
let xRaqueteDireita = 570 - larguraRaquete;
let yRaqueteDireita = 160;

//Raquete esquerda
let xRaqueteEsquerda = 30;
let yRaqueteEsquerda = 160;
let velocidadeYEsquerda;
let chanceDeErrar=0;

//Placar
let meusPontos = 0;
let pontosOponente = 0;

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

function draw() {

  background(0);
  bolinha();
  moveBolinha();
  limiteBordas();
  raquete(xRaqueteDireita, yRaqueteDireita);
  raquete(xRaqueteEsquerda, yRaqueteEsquerda);
  moveRaqueteDireita();
  moveRaqueteEsquerda();
  colisaoDireita();
  colisaoEsquerda();
  incluiPlacar();
  marcaPonto();
}

//Funções da bolinha

function bolinha (){
  circle(xBolinha, yBolinha, diametro);
}

function moveBolinha (){
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
}

function limiteBordas(){
  if (xBolinha + raio > width||
        xBolinha - raio < 0) {
    velocidadeXBolinha *= -1;
  }

  if (yBolinha + raio > height||
        yBolinha - raio < 0) {
    velocidadeYBolinha *= -1;
  }  
}

//Funções das raquetes

function raquete (x, y){
  rect(x, y,  larguraRaquete, alturaRaquete);
}

//Movimento raquete 

function moveRaqueteDireita(){

  if(keyIsDown(UP_ARROW) &&
      (yRaqueteDireita > 0)){
    yRaqueteDireita -= 5;
  }
  if(keyIsDown(DOWN_ARROW) &&
      (yRaqueteDireita + alturaRaquete < height)){
    yRaqueteDireita += 5;
  }
}

function moveRaqueteEsquerda(){
  velocidadeYEsquerda = yBolinha - yRaqueteEsquerda - larguraRaquete / 2 - 30;

  yRaqueteEsquerda += velocidadeYEsquerda + chanceDeErrar;

  calculaChanceDeErrar();
}

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

function colisaoDireita(){

  if (xBolinha + raio > xRaqueteDireita
        && yBolinha > yRaqueteDireita
          && yBolinha < yRaqueteDireita + alturaRaquete)     {

        velocidadeXBolinha *= -1;
  }
}

function colisaoEsquerda(){
  if (xBolinha - raio < xRaqueteEsquerda + larguraRaquete
        && yBolinha - raio < yRaqueteEsquerda + alturaRaquete
        && yBolinha + raio > yRaqueteEsquerda) 
      {
        velocidadeXBolinha *= -1;
    }
}

function incluiPlacar(){
  fill(255);
  text(meusPontos, 250, 30);
  text(pontosOponente, 350, 30);
}

function marcaPonto(){
  if (xBolinha < xRaqueteEsquerda){
    meusPontos =+ 1;
  }

  if (xBolinha > xRaqueteDireita){
    pontosOponente =+ 1;
  }    
}
2 respostas
solução!

Olá Susana, tudo bem?

O problema está aqui:

function marcaPonto(){
  if (xBolinha < xRaqueteEsquerda){
    meusPontos =+ 1;
  }

  if (xBolinha > xRaqueteDireita){
    pontosOponente =+ 1;
  }    

Na verdade era para ser += ou meusPontos = meusPontos + 1

A grande questão é que quando você fazia um ponto, ele estava adicionado +1 como se fosse apenas um número positivo :)

Conseguiu Compreender? Abraços e Bons Estudos!

Falta de atenção minha. Muito obrigada Geovani!