1
resposta

[Dúvida] Por que o professor utiliza a lista "imagemCarros" na função movimenta e "voltaPosicaoInicialDoCarro"?

Caros amigos

A lista imagem carros foi criada no preload com os seguintes valores

function preload () {
  imagemDaestrada = loadImage ("imagens/estrada.png")
  imagemDoAtor = loadImage ("imagens/ator-1.png");
  imagemCarro = loadImage ("imagens/carro-1.png");
  imagemCarro2 = loadImage ("imagens/carro-2.png");
  imagemCarro3 = loadImage ("imagens/carro-3.png");
 imagemCarros = [imagemCarro, imagemCarro2,imagemCarro3]

Ou seja, na lista ( de 0 a 2) representa dos seguintes valores :

  • 0 =imagemCarro ;

  • 1= imagemCarro2;

  • 2 = imagemCarro3.

    Dada essas considerações, qual o sentido de a função movimentaCarro() do professorar criar o seguinte código:

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

O certo não seria criar uma lista com velocidadeCarros [3,2,4] e atribuir o valor na estrutura de repetição acima ?? Eu crei a lista com velocidade dos carros e ficou da seguinte forma:

let velocidadeCarros = [3,2,4]

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

Será que isso altera o projeto final em algo ?? O engraçado é que eu testei das duas maneiras e as duas funcionaram perfeitamente. Eu só nao entendi o porquê de a forma do professor ter funcionado, tendo em vista que a lista imagemCarros[] faz referencia a imagens carregas no preload.

Abraço, meus amigos. Bons estudos !

1 resposta

Bom dia Edmilson, tudo certo?

Antes de tudo, gostaria de avisar que fiz algumas alterações no seu post para que ficasse mais legível, apenas fiz o seguinte:

  • Selecionei o código compartilhado no fórum.
  • Nas ferramentas do campo O que você acha disso? cliquei na sétima ferramenta de nome Inserir bloco de código.

Dessa forma o seu código pode ficar formatado certinho e todos podem usufruir dele tranquilamente.


Observações:

Primeiro definiremos alguns fatos, antes de ir para o código em si:

  • A listaimagemCarros possui 3 elementos dentro dela, indo de 0 à 2 — imagemCarros = [imagemCarro, imagemCarro2,imagemCarro3];
  • A sua lista velocidadeCarro possui dois elementos dentro dela, indo de 0 à 2 — velocidadeCarros = [3,2,4];
  • O laço de repetição for usada nas funções tem o objetivo de passar por cada carro e atribuir uma situação que irá se repetir;
  • A propriedade .length retorna a largura de um objeto (quantidade de elementos);

O Código:

Algo muito importante antes de continuarmos é desmontar o laço de repetiçãofor usado, seu funcionamento é feito pelos seus 3 parâmetros:

  1. O primeiro cria e define um valor a variável i, nesse caso o valor é 0 (representando o primeiro índice da lista) —i = 0;;
  2. A segunda define a condição para que aquele laço de repetição seja realizado (a quantidade de elementos deve parar quando chegar em tal índice) —i < imagens.length;
  3. O terceiro parâmetro abriga o incremento do primeiro (cada vez que esse laço for executado será somado +1 ao valor de i, assim passando para o próximo carro) — i = i + 1.

E a situação ou mudança aplicada nesse laço, está dentro das chaves {}, onde a repetição em si ocorre e onde será aplicada a mudança de cada carro, pegando o seu índice como base.


Quando usamos a propriedade .length, essa propriedade não visa o conteúdo da variável imagemCarros e sim a quantidade de elementos contidos na variável, indo nesse caso de 0 a 2.

Dessa forma, desde que a variável usada com .length possua 3 elementos o laço poderá ser executado normalmente, o que importa é a quantidade e não o conteúdo.


Está corretíssimo com relação a atribuição dos valores e uso, funciona muito bem pois a quantidade de velocidades vão ser respectivas as de imagens.

Ademais, fico à disposição se tiver algumas dúvida ou precisar de ajuda, conte comigo!

Um bom dia e bons estudos

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