2
respostas

Looping apenas nos dois primeiros carros.

Olá,

Estou seguindo todas as aulas para criar o jogo da vaquinha, porém após a primeira passagem dos carros, somente os dois primeiros carros estão entrando em loop, os demais não aparecem novamente.

Segue o código carros.js:

//variáveis do carro
var xCarros = [600, 600, 600, 600, 600, 600]
var yCarros = [40, 98, 150, 210, 270, 318];
var velocidadeCarros = [2, 2.5, 3.2, 5, 3.3, 2.3];

var comprimentoCarro = 50;
var alturaCarro = 40;

var xCarro1 = 600;

var xCarro2= 600;

var xCarro3= 600;

function mostraCarros(){
  for(var i = 0; i < imagemCarros.length; i = i + 1){
    image(imagemCarros[i], xCarros[i], yCarros[i], comprimentoCarro, alturaCarro);
  }

}

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


}

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

}

function passouTodaATela(xCarros){
  return xCarros < -50;
}
2 respostas

OI, Murilo! Tudo certo?

Isso pode ter ocorrido porque você utilizou var no lugar de let. O escopo de var é mais aberto e é comum o valor "vazar" para outros locais no código (quando possuem o mesmo nome).

Sugiro que você substitua por let e tente novamente:

//código do carro

let xCarros = [600, 600, 600];
let yCarros = [40, 96, 150];
let velocidadeCarros = [2, 2.5, 3.2];

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

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 xCarro < - 50;
}

Espero que tenha ajudado.

Um abraço e bons estudos!

deu certinho!!!! Muito obrigado Camila!