Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Por algum motivo, quando o jogador perde não é possível jogar de novo

5 respostas

Aqui funcionou normalmente. Provavelmente seu Navegador esta bloqueando o Alert do javaScript. Verifica isso

Testei em outro Navegador mas o problema persiste, após o "alert()" o jogador até se move e as outras funções continuam sendo executadas com exceção de pontos.play(); então quando o jogador pontua o jogo trava. Fiz umas alterações na velocidade do Jogador código: https://editor.p5js.org/Jeancg4p0/sketches/xfa6pwY-Y

Olhei no F12 (opcao de desenvolvedor)

Uncaught TypeError: pontos.play is not a function
    at pontua (10782ad9-16a1-47bb-8fda-31a06f426849:64:16)
    at draw (edca6214-8a27-4d28-adec-0cd659ae37f7:16:3)
    at p5._main.default.redraw (p5.js:70809:27)
    at _draw (p5.js:63046:25)
solução!

Removi os play = 0; Vc estava mudando o tipo da variavel.

//jogador
var xJogador = 15;
var yJogador = 310;
var wJogador = 25;
var hJogador = 28;
var colisao = false;
var meusPontos = 0;
var velJogadorI = 2;
var velJogador;
console.log(velJogador);

function mostraJog(){
  image(imgJogador, xJogador, yJogador, wJogador, hJogador);
}

function movimentaJog(){
  if(keyIsDown(UP_ARROW)){
    yJogador -= velJogador;
  }
  if(keyIsDown(DOWN_ARROW)){
    yJogador += velJogador;
  }
  if(keyIsDown(LEFT_ARROW)){
    xJogador -= velJogador;
  }
  if(keyIsDown(RIGHT_ARROW)){
    xJogador += velJogador;
  }
}

function verificaColisao(){
  //collideRectRect(x, y, width, height, x2, y2, width2, height2 )
  for(var i = 0; i < imgCarros.length; i++){
      colisao = collideRectRect(xJogador, yJogador, wJogador, hJogador, xCarros[i], yCarros[i], wCarros, hCarros );
      if(colisao){
        começaDnv();
        colidiu.play();
        if(chances > 0){
            chances--;
        }
        if(chances == 0){
          perder();
        }
      }
  }
}

function perder(){
  alert("PERDEU!");
  chances = 7;
  rounds = 1;
}

function começaDnv(){
  yJogador = 310;
}

function pontua(){
  if(yJogador + hJogador < 30 && meusPontos < 2){
        meusPontos++;
        começaDnv();
        pontos.play();
  }   
  if(yJogador + hJogador < 30 && meusPontos >= 2){
        pontos.play();
        começaDnv();
        meusPontos = 0;
        rounds++;
        velJogador = velJogadorI*rounds;
   }
  if(meusPontos < 2){
        velJogador = velJogadorI*rounds;
  }
}

function impedimento(){
   if(yJogador > 320){
     yJogador = 300
   }
 }

function verificaRound(){
    velCarros.splice(0, 6, 2.5*rounds, 1.9*rounds, 0.5*rounds, 1*rounds, 2.2*rounds, 3*rounds);
}






Nossa, muito obrigado de início não tinha entendido o que eu tinha errado, mas depois entendi, para zerar o placar após o alert não mudei a variável meusPontos mas sim a que guardava o som https://editor.p5js.org/Jeancg4p0/sketches/xfa6pwY-Y