1
resposta

Problema com sons, ; e bola entrando dentro da raquete em certo ângulo.

As vezes após alguns segundos do som tocando, ele fica distorcido e bugado, como se estivesse com lag ou algo do tipo. Também após alguns segundos do jogo funcionando normalmente, ao bater em alguma parede acontece este erro: Uncaught not ready to play file, buffer has yet to load. Try preload() (: line 2). Não consigo usar o ponto e vírgula igual o professor, por exemplo: let = velocidadeYOponente; apresenta o seguinte erro: Uncaught ReferenceError: velocidadeYOponente is not defined (sketch: line 17) porém se eu colocar let velocidadeYOponente = funciona. Da pra deixar assim ou pode rolar algum conflito? Sempre que a bola pega em cima ou em baixo da raquete ela entra pra dentro da raquete, acho que precisaria por algum tipo de colisão nessas áreas.

//Bolinha Tamanho
let = xBolinha = 300
let = yBolinha = 200
let = diametro = 20
let = raio = diametro / 2
//Bolinha Velocidade
let = velocidadeXBolinha = 7
let = velocidadeYBolinha = 7
//Raquete Tamanho
let = xRaquete = 5
let = yRaquete = 150
let = larguraRaquete = 20
let = alturaRaquete = 110
//Raquete Oponente
let = xRaqueteOponente = 575
let = yRaqueteOponente = 150
let = velocidadeYOponente =
//Sons
let = raquetada =
let = ponto =
let = trilha =
//Biblioteca
//let = colidiu = false

//Placar
let = pontosMeus = 0;
let = pontosOponente = 0;

function setup() {
  createCanvas(600, 400);
  trilha.loop();
}

function draw() {
  background(0);
  bolinha();
  movimentosBolinha();
  colisaoBorda();
  tamanhoRaquete(xRaquete, yRaquete);
  tamanhoRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentosRaquete();
  //colisaoRaquete();
  movimentarRaqueteOponente();
  colisaoBiblioteca(xRaquete, yRaquete);
  colisaoBiblioteca(xRaqueteOponente, yRaqueteOponente);
  mostrarPlacar();
  marcarPonto();
  preload();
  //correçaoDeBugs();
}

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

function movimentosBolinha(){
  xBolinha += velocidadeXBolinha
  yBolinha += velocidadeYBolinha
}

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

function tamanhoRaquete(x, y){
  rect(x, y, larguraRaquete, alturaRaquete)
}
function movimentosRaquete(){
  if (keyIsDown(UP_ARROW)){
  yRaquete -= 10
  }
  if (keyIsDown(DOWN_ARROW)){
  yRaquete += 10
  }
}

function movimentarRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - alturaRaquete / 2 - 30
  yRaqueteOponente += velocidadeYOponente

}

function colisaoRaquete(){
if (xBolinha - raio < xRaquete + larguraRaquete
   && yBolinha - raio < yRaquete + alturaRaquete
   && yBolinha + raio > yRaquete - alturaRaquete
   ){
  velocidadeXBolinha *= -1
  raquetada.play();
}
}
function colisaoBiblioteca(x, y){
  colidiu = collideRectCircle(x, y, larguraRaquete, alturaRaquete, xBolinha, yBolinha, diametro);
  if (colidiu){
  velocidadeXBolinha *= -1
  raquetada.play();
  }
}

function correçaoDeBugs(){
if (yRaquete > 0 &&
    yRaquete + alturaRaquete < 400){
if (keyIsDown(UP_ARROW)){
  yRaquete -= 10
}
if (keyIsDown(DOWN_ARROW)){
yRaquete += 10
}
if (yRaquete < 0){
  yRaquete += 1
}
if (yRaquete + alturaRaquete > 400){
  yRaquete -= 1
}
}
}
function correçaoDeBugs(){
  if(yRaquete > 0 &&
    yRaquete + alturaRaquete < 400) {
    if (keyIsDown(UP_ARROW)) {
      yRaquete -= 10;    
    };
    if (keyIsDown(DOWN_ARROW)) {
      yRaquete += 10;    
    };
  }
  if(yRaquete <= 0) {
    yRaquete += 1; }
  if(yRaquete + alturaRaquete >= 400) {
    yRaquete -= 1; }  
}

function mostrarPlacar(){
  textAlign(CENTER);
  textSize(16);
  fill(color(0, 128, 0))
  rect(430, 10, 40, 20);
  fill(255)
  text(pontosOponente, 450, 26)
  fill(color(0, 128, 0))
  rect(129, 10, 40, 20);
  fill(255)
  text(pontosMeus, 150, 26)
}
function marcarPonto(){
if (xBolinha + raio > 600){
  pontosMeus += 1
  ponto.play();
}
if (xBolinha - raio < 0){
  pontosOponente += 1
  ponto.play();
}
}
function preload(){
  trilha = loadSound("trilha.mp3")
  raquetada = loadSound("raquetada.mp3")
  ponto = loadSound("ponto.mp3")
}
1 resposta

Boa noite Eduardo, primeiramente sobre os sons, acredito que se você remover a declaração da função preload(); da draw já resolva o seu problema com os sons se distorcendo e repedindo, consequêntemente resolvendo o erro de buffer.

Segundamente, eu recomendo fortemente que você adote o uso de ";"(ponto e vírgula), ele não é necessáriamente obrigatório, mais indica o fim de um comando, dependendo da maneira que você digita o código ele pode ser interpretado de uma maneira alheia a que você deseja, segue um link sobre o assunto mais afundo https://pt.stackoverflow.com/questions/3341/utilizar-ou-n%C3%A3o-ponto-e-v%C3%ADrgula-no-fim-das-linhas-no-javascript.

Terceiramente quando for declarar uma variavel, não necessita um sinal de = entre o let e a variável, como feito por exemplo no seguinte código let = xBolinha = 300, o mesmo poderia ser escrito como let xBolinha = 300;, acredito que isso resolva o motivo de não conseguir declarar a variável no valor zero. Espero ter ajudado, forte abraço.