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

Por qual motivo o instrutor não declarou a váriável imagemCarros com o let?

Toda lista que ele criou, declarou com o let... a "imagemCarros" não... Fiquei com muita dúvida sobre isso, já li todos os tópicos das outras pessoas que tiveram a mesma dúvida, mas não ajudou muito.

Vamos ao código:

//imagens do jogo
let imagemEstrada;
let imagemAtor;
let imagemCarro;
let imagemCarro2;
let imagemCarro3;

//Vai carregar as imagens a serem utilizadas
function preload() {
  imagemEstrada = loadImage("imagens/estrada.png");
  imagemAtor = 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];
}

do jeito que ele fez acima, ele manteve as variáveis imagemCarro, imagemCarro2 e imagemCarro3 e aí, dentro do preload criou mais uma linha com uma lista para armazenar as 3 variáveis... Aí, eu já comecei na dúvida por ver o imagemCarros ser criado sem o let, var ou const, então isso já uma baita dúvida...

E aí, penso: Por qual motivo ele já não declarou uma lista fora da função e carregou as imagens diretamente dentro de cada posição. Esse meu entendimento ficaria assim (eu testei dessa forma e funcionou):

//imagens do jogo
let imagemEstrada;
let imagemAtor;
let imagemCarros = ['', '', ''];

//Vai carregar as imagens a serem utilizadas
function preload() {
  imagemEstrada = loadImage("imagens/estrada.png");
  imagemAtor = loadImage("imagens/ator-1.png");
  imagemCarros[0] = loadImage("imagens/carro-1.png");
  imagemCarros[1] = loadImage("imagens/carro-2.png");
  imagemCarros[2] = loadImage("imagens/carro-3.png");
}

Então ficam duas dúvidas cabeludas:

1 - Pq não teve um let maroto antes da lista que o instrutor criou dentro do preload?

2 - Pq ele nao criou essa lista fora do preload e carregou cada posição da mesma com uma imagem e assim, excluindo as 3 variáveis imagemCarro, imagemCarro2 e imagemCarro3?

Muitíssimo agradicido desde já XD

3 respostas
solução!

1 - Não teve um let pois uma lista não é uma variável mas sim o que chamam de array, apesar de ainda funcionar com uma declaração let como se fosse uma variável (um comportamento que não entendo)... Então se tu remover o let antes de qualquer lista, ela ainda funcionará normalmente.

2 - Estou em dúvida quanto a resposta dessa pergunta então não poderei responder.

Não sei te responder nenhuma das duas perguntas, mas quero agradecer pelo método/resolução que vc fez pra sua segunda pergunta, acabei pegando sua ideia e levando para o meu código!

Hey Weslen! Você por aqui de novo me dando um help! Muito obrigado pelos esclarecimentos! Notei que isso também ocorre em outras situações como por exemplo quando a gente declara aquela variável de controle dentro de uma estrutura de repetição com for... algumas vezes esqueci de declarar com o let apenas escrevendo "i = 0" por exemplo e funcionou kkkk

Rodrigo, sem querer acabei contribuindo com alguma coisinha para você? Então show, fico bem contente em saber!

Bora arregaçar nos estudos, minha gente!

Bons estudos para nós o/