1
resposta

[Bug] Erro ao Definir o Let da função VoltaPosicaoInicialDoCarro

Antes de refatorar o meu código, na parte da função voltaPosicaoInicialDoCarro com os índices, estava tudo correto e funcionando, mas após mudar seguindo a vídeo aula, não funciona mais, os carros não voltam mais a posição inicial e quando volta é a penas o primeiro.

Já reescrevi, Copiei o código igual ao do professor, alterando apenas alguns valores de velocidade, e mesmo assim não funciona.

o códido enquanto funcionava estava assim:

//variaveis do carro

let yCarros = [45, 100, 150];
let velocidadeCarros = [2.4, 4, 3.1]
let xCarros = [600, 600, 600]


function mostraCarro(){
  for (let i = 0; i < imagemCarros.length; i = i + 1 ){
    image(imagemCarros[i], xCarros[i], yCarros[i], 50, 30);
  }
}

function movimentaCarro(){
  for (let i = 0; i < imagemCarros.length; i = i + 1 ){
    xCarros[i] -= velocidadeCarros[i];
  }
}

function voltaPosicaoInicialDoCarro(){
  for (let i = 0; i <imagemCarros.length; i = i + 1){}
    if (xCarros[0] < -50){
      xCarros[0] = 600
    }
     if (xCarros[1] < -50){
      xCarros[1] = 600
    }
     if (xCarros[2] < -75){
      xCarros[2] = 600
  }
}

Após eu alterar exatamente como feito no vídeo, parou de funcionar. O código com o bug está assim:

//variaveis do carro

let xCarros = [600, 600, 600]
let yCarros = [45, 100, 150];
let velocidadeCarros = [2.4, 4, 3.1]



function mostraCarro(){
  for(let i = 0; i < imagemCarros.length; i = i + 1){
    image(imagemCarros[i], xCarros[i], yCarros[i], 50, 30);
  }
}

function movimentaCarro(){
  for(let i = 0; i < imagemCarros.length; i = i + 1){
    xCarros[i] -= velocidadeCarros[i];
  }
}

function voltaPosicaoInicialDoCarro(){
  for(let i = 0; i < imagemCarros.length; i = i + 1){
    if (passouTodaATela(xCarros[i])){
      xCarros[i] = 600
    }
  }
}

function passouTodaATela(xCarro){
  return xCarros < -50;
}
1 resposta

Olá, Raul!

Pelo que pude perceber, o problema está na função passouTodaATela(xCarro). Nessa função, você está comparando a lista completa xCarros com -50, quando deveria estar comparando o parâmetro xCarro com -50.

Aqui está a correção:

function passouTodaATela(xCarro){
  return xCarro < -50;
}

Com essa alteração, a função passouTodaATela(xCarro) agora recebe o valor de xCarros[i] e compara se ele é menor que -50. Se for, retorna true, indicando que o carro passou toda a tela.

Espero ter ajudado e bons estudos!