Boa noite, estou tentando saber porque os carros somem, depois que tento melhorar o código criando a variável i. Segue o código todo
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite, estou tentando saber porque os carros somem, depois que tento melhorar o código criando a variável i. Segue o código todo
Olá Juliana, tudo bem?
Foi possível perceber dois problemas aqui em seu código, vamos lá.
A seguinte resposta considera o código do arquivo carro.js passado na aula, que insere a utilização do for, sendo essa a estrutura que utiliza a variável i mencionada na sua pergunta. Segue abaixo como proceder a partir do código enviado pelo link que você enviou:
Passo 1 inserindo o for e a nova função passouTodaATela no seu arquivo carro.js:
//código do carro
let xCarros = [600, 600, 600];
let yCarros = [40, 96, 150];
let velocidadeCarros = [2, 2.5, 3.2];
function mostraCarro(){
for(let i = 0; i < imagemCarros.length; i = i + 1){
image(imagemCarros[i], xCarros[i], yCarros[i], 50, 40);
}
}
function movimentaCarro(){
for(let i = 0; i < imagemCarros.length; i = i + 1){
xCarros[i] -= velocidadeCarros[i];
}
}
function voltaPosicaoInicalDoCarro(){
for(let i = 0; i < imagemCarros.length; i = i + 1){
if(passouTodaATela(xCarros[i])){
xCarros[i] = 600;
}
}
}
function passouTodaATela(xCarro){
return xCarro < - 50;
}Passo 2
O programa irá retornar uma linha vermelha na linha 8 do arquivo carro.js. O problema retorna no console, segue a imagem:
Significa que a lista imagemCarros não está definida.
Passo 3 Para resolver o problema, é só ir no arquivo imagens.js e inserir a lista no final da função preload, segue código:
//imagens do jogo
let imagemDaEstrada;
let imagemDoAtor;
let imagemCarro;
let imagemCarro2;
let imagemCarro3;
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]
}Fazendo isso, os carros voltam a ir e vir pela tela!
Olá, gustavo! Boa noite, tudo bem? Fiz o código conforme as orientações, acrescentei todas as partes do passo 1. Quando terminei o passo o 1 e dei play no jogo, os carros continuaram a não aparecer. Porém, o console não apresentou nenhum erro. Sobre o passo 2, não houve erro na linha for da função mostra carro. O passo 3, aonde é criada a lista no final da função preload, já havia sido criada.
Não sei ainda, o que pode ter sido, segue o link do código: https://editor.p5js.org/Juba_1993F/sketches/xgr8uudhf
Boa noite, Juliana!
Certo, agora com as suas novas modificações passadas no link acima, vi aqui que nas linhas 20 e 29 do arquivo carro.js, dentro da estrutura for você acabou passando lenght, quando o correto é length. Segue imagem:
Alterando para length os carros voltam a ir e vir pela tela!
nossa, era apenas por uma palavrinha...rsrs. Na programação, cada detalhe faz a diferença, agora deu certo! obrigada!
Show Juliana! Exatamente, que bom que agora está funcionando seu código! É importante marcar como solucionado o tópico, assim, outras pessoas que possam ter uma dúvida parecida com a sua irão ver este que já está solucionado na lista.