1
resposta

Ajuda ai bug de som

Esse é meu codigo, porem quando fui por som deu ruim.. a trilha sonora fica tocando mas depois começa a travar, e travar o jogo todo junto. Já a raquetada e o ponto, não vão, assim que era pra tocar um dos dois acusa erro desconhecido e trava o jogo.

//variaveis sons do jogo
let raquetada;
let ponto;
let trilha
//Variaveis da bolinha

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let velocidadeXBolinha = 7;
let velocidadeYBolinha = 8; 
let raio = diametro / 2;
//Variaveis de pontos
let meusPontos = 0;
let pontosInimigos = 0;
//Variaveis minha raquete
let xRaquete = 5;
let yRaquete = 200;
let raqueteComprimento = 7;
let raqueteAltura = 90;
let colidiu = false;
//Variaveis raquete inimiga
let xRaquete2 = 585
let yRaquete2 = 200
let velocidadeYOponente;
//som
function preload() {
    trilha = loadSound("trilha.mp3");
    ponto = loadSound("ponto.mp3");
    raquetada = loadSound("raquetada.mp3");
}
//FUNÇÃO PARA INVOCAR O CENARIO

function setup() {
    createCanvas(600, 400);
    trilha.loop();
}
//DRAW DESENHA COISAS NO CENARIO
function draw() {
    background(0);
    criandoBolinha();
    movimentoBolinha();
    colisaoBordas();
    mostrarRaquete(xRaquete,yRaquete);
    mostrarRaquete(xRaquete2,yRaquete2);
    movimentoRaquete();                                     colisaoMinhaRaqueteBiblioteca(xRaquete,yRaquete);
    colisaoMinhaRaqueteBiblioteca(xRaquete2,yRaquete2);
    movimentaRaqueteOponente();
    mostrarPonto();
    preload();
  addPontos();
}
//fUNÇÃO PARA CRIAR A BOLINHA 
function criandoBolinha(){
      circle(xBolinha, yBolinha, diametro)
}
//FUNÇÃO PARA MEXER A BOLINHA 
function movimentoBolinha(){
    xBolinha += velocidadeXBolinha;
    yBolinha += velocidadeYBolinha;

}
//FUNÇÃO DE COLISAO NAS BORDAS
function colisaoBordas(){
  if(xBolinha + raio > width || xBolinha - raio <0){
    velocidadeXBolinha *= -1
  }
  if(yBolinha + raio > height || yBolinha - raio <0){
    velocidadeYBolinha *= -1
  }
}
//FUNÇÃO PARA DESENHAR A RAQUETE 
function mostrarRaquete(x,y){
  rect(x,y,raqueteComprimento,raqueteAltura)
}
//FUNCAO PARA MOVIMENTAR A RAQUETE 
function movimentoRaquete(){
  if( keyIsDown(UP_ARROW)){
  yRaquete -= 10
  }
  if(keyIsDown(DOWN_ARROW)){
  yRaquete += 10
  }
}
//FUNÇÃO BAIXADA DA BIBLIOTECA DO GITCHUB PARA COLISAO DE OBJETOS 2D, NO CASO A BOLINHA NA MMINHA RAQUETE 
function colisaoMinhaRaqueteBiblioteca(x,y) {
    colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
    if (colidiu) { 
      velocidadeXBolinha *= -1;

      raquetada.play();
       }
}
//FUNÇÃO PARA DAR AUTONOMIA A RAQUETE INIIMIGA 
function movimentaRaqueteOponente() {
    velocidadeYOponente = yBolinha - yRaquete2 - raqueteComprimento / 2 - 30;
    yRaquete2 += velocidadeYOponente
}
function mostrarPonto(){
  textSize(16);
  stroke(0);
  textAlign(CENTER);
  fill(color(34,139,34));
  rect(130,10,40,20);
  fill(255);
  text(meusPontos,150,26);
  fill(color(120,0,0));
  rect(430,10,40,20);
  fill(255);
  text(pontosInimigos,450,26);

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

  }
}
1 resposta

Olá, Renan! Tudo bem com você?

Testei seu código no meu p5.js e pude perceber que você inseriu a function preload() na function draw() e isso que gerou o erro. A draw() funciona como se tivesse um loop e continuamente vai mostrar o código na área de visualização. Por outro lado, a preload () é especificamente para fazer o pré-carregamento de arquivos, então ao inserí-la na draw() você estava pré-carregamento continuamente algo e o interpretador não compreendeu a instrução.

Para resolver o problema é suficiente que você retire a preload() dentro da draw()

Vou deixar o código com a correção para você testar.

//variaveis sons do jogo
let raquetada;
let ponto;
let trilha
//Variaveis da bolinha

let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let velocidadeXBolinha = 7;
let velocidadeYBolinha = 8; 
let raio = diametro / 2;
//Variaveis de pontos
let meusPontos = 0;
let pontosInimigos = 0;
//Variaveis minha raquete
let xRaquete = 5;
let yRaquete = 200;
let raqueteComprimento = 7;
let raqueteAltura = 90;
let colidiu = false;
//Variaveis raquete inimiga
let xRaquete2 = 585
let yRaquete2 = 200
let velocidadeYOponente;
//som
function preload() {
    trilha = loadSound("trilha.mp3");
    ponto = loadSound("ponto.mp3");
    raquetada = loadSound("raquetada.mp3");
}
//FUNÇÃO PARA INVOCAR O CENARIO

function setup() {
    createCanvas(600, 400);
    trilha.loop();
}
//DRAW DESENHA COISAS NO CENARIO
function draw() {
    background(0);
    criandoBolinha();
    movimentoBolinha();
    colisaoBordas();
    mostrarRaquete(xRaquete,yRaquete);
    mostrarRaquete(xRaquete2,yRaquete2);
    movimentoRaquete();
    colisaoMinhaRaqueteBiblioteca(xRaquete,yRaquete);
    colisaoMinhaRaqueteBiblioteca(xRaquete2,yRaquete2);
    movimentaRaqueteOponente();
    mostrarPonto();
    //preload(); bem aqui, apenas retirar a preload()
   addPontos();
}
//fUNÇÃO PARA CRIAR A BOLINHA 
function criandoBolinha(){
      circle(xBolinha, yBolinha, diametro)
}
//FUNÇÃO PARA MEXER A BOLINHA 
function movimentoBolinha(){
    xBolinha += velocidadeXBolinha;
    yBolinha += velocidadeYBolinha;

}
//FUNÇÃO DE COLISAO NAS BORDAS
function colisaoBordas(){
  if(xBolinha + raio > width || xBolinha - raio <0){
    velocidadeXBolinha *= -1
  }
  if(yBolinha + raio > height || yBolinha - raio <0){
    velocidadeYBolinha *= -1
  }
}
//FUNÇÃO PARA DESENHAR A RAQUETE 
function mostrarRaquete(x,y){
  rect(x,y,raqueteComprimento,raqueteAltura)
}
//FUNCAO PARA MOVIMENTAR A RAQUETE 
function movimentoRaquete(){
  if( keyIsDown(UP_ARROW)){
  yRaquete -= 10
  }
  if(keyIsDown(DOWN_ARROW)){
  yRaquete += 10
  }
}
//FUNÇÃO BAIXADA DA BIBLIOTECA DO GITCHUB PARA COLISAO DE OBJETOS 2D, NO CASO A BOLINHA NA MMINHA RAQUETE 
function colisaoMinhaRaqueteBiblioteca(x,y) {
    colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio);
    if (colidiu) { 
      velocidadeXBolinha *= -1;
      raquetada.play();
       }
}
//FUNÇÃO PARA DAR AUTONOMIA A RAQUETE INIIMIGA 
function movimentaRaqueteOponente() {
    velocidadeYOponente = yBolinha - yRaquete2 - raqueteComprimento / 2 - 30;
    yRaquete2 += velocidadeYOponente
}
function mostrarPonto(){
  textSize(16);
  stroke(0);
  textAlign(CENTER);
  fill(color(34,139,34));
  rect(130,10,40,20);
  fill(255);
  text(meusPontos,150,26);
  fill(color(120,0,0));
  rect(430,10,40,20);
  fill(255);
  text(pontosInimigos,450,26);

}

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

  }
}

Espero que tenha 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