1
resposta

Ao inserir

Olá pessoas, tudo bem com vocês? Meu primeiro post aqui =D

Bom, tudo estava funcionando corretamente até inserir o código "chanceDeErrar" na linha 59 do código.

Fiz algumas alterações no código que nos é mostrado, como o "verificaColisaoRaqueteOponente", talvez seja esta a complicação?

Obs.: Quis uma ambientação mais retro lembrando jogos em 8 bits, coloquei uma música e ficou um pouco alta, como poderia diminuir a mesma pelo próprio p5js ?

//A trilha sonora está comentada por conta do volume muito alto :D https://editor.p5js.org/matteuspds/sketches/JePIWPDaI

// variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
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;

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

//Sons do Jogo
let trilha;
let raquetada;
let ponto;

//Chance de errar
let chanceDeErrar = 0;

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();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente)
  movimentaRaqueteOponente();
  verificaColisaoRaqueteOponente();
  incluiPlacar();
  marcaPontos();
  chanceDeErrar();
}

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 movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar;
  calculaChanceDeErrar();
}

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

function verificaColisaoRaquete(){
  if (xBolinha - raio < xRaquete + raqueteComprimento &&  yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
    raquetada.play();
  }
}

function verificaColisaoRaqueteOponente(){
  if (xBolinha + raio > xRaqueteOponente &&  yBolinha - raio < yRaqueteOponente + raqueteAltura  && yBolinha + raio > yRaqueteOponente){
    velocidadeXBolinha *= -1;
    raquetada.play();
  }
}

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

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



1 resposta

Oi oi, Matheus! Seja bem-vindo e espero que esse seja o primeiro post de muitos! :D Como você está?

Um aluno aqui da Alura também teve esse mesmo questionamento e elaborou uma solução excelente para o problema. Vou deixar o link do tópico dele para você acompanhar: Melhorias no joguinho da vaca

O Lucas descobriu através da documentação do p5.js que há a possibilidade de mudar o volume dos sons:

através do código:

somTrilha.loop(0.1, 1, 0,1) (O primeiro 0.1 é o tempo pra executar a musica, o segundo 1 é a taxa de reprodução, e o terceiro 0,1 é de fato o som do jogo)

Espero que as informações tenham contribuido.

Um forte abraço e bons estudos!