Observando o que o professor fazia enquanto programava, tive uma intuição que aparentemente retornou resultados satisfatórios. O código montado pelo professor utiliza uma função a mais, a função "passouTodaATela", como anexado abaixo:
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;
}
Entretanto, decidi montar o meu código de uma outra maneira, excluindo a função adicional e mantendo apenas a função "voltaPosicaoInicialDoCarro". Ao fazer isso, pude notar que a segunda função montada pelo professor para complementar a primeira podia ser deixada de lado simplesmente pelo fato de que, na função "voltaPosicaoInicialDoCarro" o índice i** já dá à condicional **if os três parâmetros para ela executar, não sendo necessário o comando return:
function voltaPosiçãoInicial(){
for (let i = 0; i < imagemCarros.length; i = i + 1){
if (xCarros[i] < -70){
xCarros[i] = 500;
}
}
}
Para evitar confusões, eu deixo destacado que não utilizei laços para a minha função movimentoCarro, uma vez que cada índice possui uma velocidade específica, não sendo, necessariamente, em ordem crescente, como no caso do professor. Pode ser que essa variação que pude implementar no meu código seja diretamente relacionado a isso, algo que ainda não pude verificar, mas deixo aqui a minha "descoberta" e peço ajuda para esclarecer essas questões.
function movimentoCarro(){
xCarros[0] -= 4;
xCarros[1] -= 5;
xCarros[2] -= 3;
}