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

[Dúvida] É possível usar o mesmo índice para outras funções?

Olá, pessoal!

Enquanto fazia a aula de laços e listas me surgiu a seguinte dúvida:

Tendo em vista que todos os índices nessa lista possuem o mesmo valor:

let xCarros = [600, 600, 600]

No trecho de código abaixo, seria possível usar apenas o xCarros[0] para todas as outras funções?

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

function mostraCarro() {
 image(imagemCarro1, xCarros[0], yCarros[0], 50, 40);
 image(imagemCarro2, xCarros[1], yCarros[1], 50, 40);
 image(imagemCarro3, xCarros[2], yCarros[2], 50, 40);
}

function movimentaCarro() {
 xCarros[0] -= velocidadeCarros[0];
 xCarros[1] -= velocidadeCarros[1];
 xCarros[2] -= velocidadeCarros[2];
}

function voltaPosicaoInicialDoCarro() {
  if(xCarros[0] < -50 ) {
     xCarros[0] = 600;
  }
  if(xCarros[1] < -50 ) {
     xCarros[1] = 600;
  }
  if(xCarros[2] < -50 ) {
     xCarros[2] = 600;
  }
}

Fiz os testes aqui e não funciononou, só que não consegui entender exatamente o motivo. Então se alguém puder me ajudar a entender o por quê, eu agradeço!

2 respostas
solução!

Olá, Gabriel! Tudo bem?

Imagine que o array xCarros é como uma gaveta com três lugares, e cada lugar guarda a posição X de um carro.

Quando você faz xCarros[0] -= velocidadeCarros[0], você está pegando o primeiro lugar da gaveta (que contém 600) e subtraindo a velocidade do primeiro carro (2) dessa posição. Isso faz o primeiro carro se mover para a esquerda.

No entanto, se você usasse somente xCarros[0] em todas as operações, você estaria sempre mexendo apenas na primeira gaveta. Os outros dois carros (que estão nas gavetas 2 e 3) não seriam afetados.

Portanto, para que todos os carros se movam, você precisa se certificar de mexer nas gavetas corretas. No caso, você precisa continuar usando xCarros[0] para o primeiro carro, xCarros[1] para o segundo carro e xCarros[2] para o terceiro carro.

Assim, cada carro será atualizado individualmente e todos os carros irão se mover corretamente. A diferença entre os carros é que eles estão em gavetas separadas (elementos separados do array), e para que todos eles se movam, você precisa mexer em cada gaveta separadamente.

Espero que essa analogia ajude a entender o conceito de por que você precisa usar índices diferentes para cada carro. Se tiver mais dúvidas, estou aqui para ajudar!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado pela explicação Maria Eduarda! A analogia ajudou sim e agora ficou claro o motivo de utilizar índices diferentes.