1
resposta

Bug com modo de dificuldade

Ola eu tentei adicionar uma função uma função para almentar a difculdade do jogo modificando a velocidade do eixo x e y da bola mas quando a função é ativada o jogo inteiro começa a bugar. Alguem teria alguma dica?

let xBolinha = 300;
let yBolinha = 200;
let diametroBolinha = 20;
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
let raio = diametroBolinha / 2;
//variável das raquetes.
let xRaquete1 = 5;
let yRaquete1 = 150;
let larguraRaquete = 10;
let alturaRaquete = 70;
// variávei do oponente
let xRaquete2 = 585;
let yRaquete2 = 150;
let velocidadeYRaquete2;
let colidiu = false;
let meusPontos = 0;
let pontosOponente = 0;
let chanceDeErrar = 0;

let trilha;
let ponto;
let raquetada;

function preload() {
  trilha = loadSound("trilha.mp3");
  ponto = loadSound("ponto.mp3");
  raquetada = loadSound("raquetada.mp3");
}
function setup() {
  createCanvas(600, 400);
  trilha.loop();
}

function draw() {
  background(000);
  mostrarBolinha();
  movimentarBolinha();
  mostraRaquete(xRaquete1,yRaquete1);
  movimentarRaquete1();
  mostraRaquete(xRaquete2, yRaquete2);
  movimentoRaquete2();
  colisaoRaquete(xRaquete1, yRaquete1);
  colisaoRaquete(xRaquete2, yRaquete2);
  placar();
  marcarPontos();
  modoDesafio();

  function bolinhaNaoFicaPresa(){
    if (xBolinha + raio < 0){
    console.log('bolinha ficou presa');
    xBolinha = 300;
    }
}
}

function mostrarBolinha() {
  fill('rgb(0, 255, 0)');
  circle(xBolinha, yBolinha, diametroBolinha);
}

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

function mostraRaquete(x, y) {
  fill (255);
  rect(x, y,  larguraRaquete, alturaRaquete);

}

function movimentarRaquete1() {
  if(keyIsDown(UP_ARROW)) {
    yRaquete1 -= 10
  }
  if(keyIsDown(DOWN_ARROW)) {
    yRaquete1 += 10
  }
}

function movimentoRaquete2() {
  velocidadeYRaquete2 = yBolinha - yRaquete2 - larguraRaquete / 2 - 30;
   yRaquete2 += velocidadeYRaquete2 + chanceDeErrar;
  calculeChanceDeErrar();
}

function colisaoRaquete(x, y) {
  colidiu = collideRectCircle ( x, y, larguraRaquete,  alturaRaquete,  xBolinha,  yBolinha,  diametroBolinha) ;
  if (colidiu) {
      velocidadeXBolinha *= -1;
    raquetada.play();
      }
}

function placar() {
  textAlign (CENTER)
  fill ('rgb(100%, 0%, 10%)');
  rect (180, 9, 40, 30);
  rect (330, 9, 40, 30);
  fill (255)
  textSize (20);
  text (meusPontos, 200, 30);
  text (pontosOponente, 350, 30);
}

function marcarPontos() {
  if (xBolinha > 590) {
    meusPontos += 1;
     ponto.play();
  }

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

}

function calculeChanceDeErrar() {
  if (pontosOponente >= meusPontos) {
    chanceDeErrar += 1;
    if (chanceDeErrar >= 39){
    chanceDeErrar = 60;
    }
  } else {
    chanceDeErrar -= 1;
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35;
    }
  }
}

function modoDesafio() {
if (meusPontos > 3) {
    velocidadeXBolinha = 8;
    velocidadeYBolinha = 8;
  } 
}
1 resposta

Oi oi, Carlos! Como você está?

Quando alteramos a velocidade da bolinha algumas modificações na lógica do projeto também precisam ser realizadas, por isso ocorreu o bug. Alguns alunos também tiveram a mesma dúvida sobre como implementar níveis de dificuldade ou o erro aleatório do oponente e vou compartilhar os links para respostas bem legais aqui para você.

Espero que as informações tenham ajudado!

Um abraço e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software