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

Não consigo usar o for(){}

No meu caso eu coloquei um dos carros pra se movimentar no sentido contrário. Só que não consegui entender como fazer para o for funcionar nesse caso. Consigo usar o for só na função mostraCarro.

//posicao do carro
let xCarro = [700, 10, 800];
let yCarro = [40, 96, 150];

//tamanho do carro
let larguraCarro = 70;
let alturaCarro = 40;

//velocidade do carro
let velocidadeCarro = [2, 2.5, 3.2];

function mostraCarro(){
    for (let i = 0; i < imagemCarros.length; i = i + 1) {
        image(imagemCarros[i], xCarro[i], yCarro[i], larguraCarro, alturaCarro);
    }
}

function movimentaCarro(){
    xCarro[0] -= velocidadeCarro[0];
    xCarro[1] += velocidadeCarro[1];
    xCarro[2] -= velocidadeCarro[2];
}

function voltaPosicaoInicialCarro(){
    if (xCarro[0] < -70){
        xCarro[0] = 700;
    }
    if (xCarro[1] > 800){
        xCarro[1] = -70;
    }
    if (xCarro[2] < -70){
        xCarro[2] = 600;
    }
}
2 respostas
solução!

Oi, Mayla

O "movimentaCarro" é igual a apresentada pelo instrutor,

apenas a velocidade tem que ser negativa para o segundo carro


let velocidadeCarro = [ 2, -2.5, 3.2 ];

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

Para usar com "voltaPosicaoInicialCarro",

tem que ter um array com as suas posições iniciais

let xCarroInicio = [700, -70, 600];  // dados retirados da sua função

function voltaPosicaoInicialDoCarro(){
    for(let i = 0; i < imagemCarros.length; i = i + 1){
        if(passouTodaATela(xCarros[i])){
                xCarros[i] = xCarroInicio[i];  // retorno a posição inicial
        }
    }
}

function passouTodaATela(xCarro){
    return xCarro < - 70 || xCarro > 800 ;  // valores conforme sua função
}

Oi Luis, muito obrigada pela resposta. Funcionou direitinho!