3
respostas

Quando coloco a variável, a raquete oponente some.

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

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

//variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

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

let colidiu = false

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

//sons do jogo
let raquetada;
let ponto;
let trilha;

//chance de errar
let chanceDeErrar

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);
  movimentaMinhaRaquete();
  //verificaColisaoRaquete();
  verificaColisaoRaquete(xRaquete, yRaquete);
  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(){
  if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
    raquetada.play();
  }
}

function verificaColisaoRaquete(x, y){
  colidiu = collideRectCircle(x, y , raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
  if (colidiu){
    velocidadeXBolinha *= -1;
    raquetada.play();
  }
}


function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento /2 -30;
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar
  calculaChanceDeErrar();
}

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

function incluiPlacar(){
  stroke(255);
  textAlign (CENTER);
  textSize (16);
  fill (color(255, 140, 0));
  rect (150, 10, 40, 20);
  fill (255);
  text (meusPontos, 170, 26);
  fill (color(255, 140, 0));
  rect (450, 10, 40, 20);
  fill (255);
  text (pontosDoOponente, 470, 26 );
}

function marcaPonto(){
  if (xBolinha > 590){
    meusPontos += 1;
    ponto.play();
  }
  if (xBolinha < 10){
    pontosDoOponente += 1;
    ponto.play();
  }
}
3 respostas

Olá Dandhara! Não compreendi muito a sua dúvida, sobre qual variável que você coloca que faz sumir a raquete do oponente, mas dei uma olhada no seu código no geral e vi algumas coisas que poderiam melhorar, e um erro apenas. O erro se encontra logo no início na 5° linha let = raio = diametro / 2; na declaração de variável não é necessário atribuir com o "=", acredito que tenha sio apenas um erro de digitação. As melhorias que eu acredito que poderiam ser feitas, são quanto aos ;, acredito que na plataforma j5.ps não interfere muito ter ou não ponto e vírgula mas é boa prática colocar, pelo menos já que começou colocando. A outra melhoria é quanto a inicialização das variáveis, fora as de som você poderia inicializar todas as outras, mesmo que seja com o valor 0, como por exemplo let chanceErro = 0;. Espero ter ajudado!

Olá! Acabei não explicando direito quando fiz o post, mas a variável que eu estava me referindo é a que possibilita a raquete do oponente errar.

Ah sim, não sei se já conseguiu resolver, mas acredito que identifiquei o problema. No seu código você colocou o novo if dentro do else da chance de errar na função calculaChanceDeErrar(), além disso também tem uma chave "}" fechando desnecessariamente antes do else. Está assim:

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

Mas acredito que o certo seria com o terceiro if fora do else, dessa forma:

function calculaChanceDeErrar() {
    if (pontosDoOponente >= meusPontos) {
        chanceDeErrar++;

        if  (chanceDeErrar  >=  39){
            chanceDeErrar = 40;
        } else {
            chanceDeErrar -= 1
        }

        if  (chanceDeErrar <= 35){
            chanceDeErrar = 35
        }
    }
}

Esta é a forma como eu havia feito, também tomei a liberdade para trocar alguns trechos do código como o "+=" por um "++" e o valor da chance de erro de 45 para 40. Espero ter ajudado!