Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[BUG] Jogo trava após inserir sons

O jogo não funciona depois de colocar os sons. Segui os conselhos dos colegas e coloquei tudo numa pasta só, o jogo sai daquele erro de ficar mostrando "loading" na tela, mas depois que a vaquinha atravessa a rua o jogo trava completamente e fica congelado!!

imagens.js

// Imagens do jogo
let imagemDaEstrada;
let imagemDoAtor;
let imagemDoCarro1;
let imagemDoCarro2; 
let imagemDoCarro3;

// Sons do jogo
let somDaTrilha;
let somDosPontos;
let somDaColisao;

function preload() {
  somDaTrilha = loadSound("imgs/trilha.mp3");
  somDosPontos = loadSound("imgs/pontos.wav");
  somDaColisao = loadSound("imgs/colidiu.mp3");
  imagemDaEstrada = loadImage("imgs/estrada.png");
  imagemDoAtor = loadImage("imgs/ator-1.png");
  imagemDoCarro1 = loadImage("imgs/carro-1.png");
  imagemDoCarro2 = loadImage("imgs/carro-2.png");
  imagemDoCarro3 = loadImage("imgs/carro-3.png");
  imagemCarros = [imagemDoCarro1, imagemDoCarro2, imagemDoCarro3, imagemDoCarro1, imagemDoCarro2, imagemDoCarro3 ];
}

ator.js

let yAtor = 590;
let xAtor = 500;
let colisao = false; // personagem nasce embaixo, portanto no início do jogo não tem colisão
let meusPontos = 0;

function mostraAtor() {
  imagemDaEstrada(imagemDoAtor, xAtor, yAtor, 30, 30);
  print(yAtor);
}

function movimentaAtor() {
  if (keyIsDown(UP_ARROW)) {
    yAtor -= 3;
  }
  if (keyIsDown(DOWN_ARROW)) {
    if (podeSeMover()) { // Limita a movimentação do ator para que não passe do limite da tela
      yAtor += 3;
    }
  }
}

function verificaColisao() {
  for (let i = 0; i < imagemCarros.length; i++) {
    colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarros, alturaCarros, xAtor, yAtor, 15);
    if (colisao) {
      voltaAtorPosicaoInicial();
      somDaColisao.play();
      if (pontosMaiorQueZero()) {
        meusPontos -= 1;
      }
    }
  }
}

function voltaAtorPosicaoInicial() {
  yAtor = 590;
}

// desenha o placar na tela
function incluiPontos() {
  textAlign(CENTER);
  textSize(25);
  fill(color(255, 240, 60));
  text(meusPontos, width / 5, 35); // define a posição onde aparece o texto
}

// faz a alteração dos pontos
function marcaPonto() {
  if (yAtor < 15) { // define uma posição específica que o ator alcança ao marcar os pontos
    meusPontos += 1;
    voltaAtorPosicaoInicial();
    somDaPonto.play();
  }
}

function pontosMaiorQueZero() {
  return meusPontos > 0;
}

function podeSeMover() { // Verifica se o ator está na posição inicial
  return yAtor === 590;

Arquivos da pasta

1 resposta
solução!

Problema resolvido, estava chamando a função errada!