5
respostas

Depois que refaço código de movimentaCarro, os carro desaparecem

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

https://editor.p5js.org/Juba_1993F/sketches/xgr8uudhf

5 respostas

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: erro de chamada de lista

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: print identificando erro de digitação

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.