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

[Dúvida] Criando uma lista não funciona.

Quando crio listas, escrevi o código como o profesor instruiu, mas não funciona sempre da erro na linha 8 (ReferenceError: xCarro2 is not defined),

//codigo dos carros
let xCarro = [600,600,600]
let yCarro = [40, 96, 150]
let velocidadeCarro = [2, 2.5, 3.2]



function mostraCarro(){
   image(imagemCarro, xCarro[0], yCarro[0], 50, 40)
   image(imagemCarro2, xCarro2[1], yCarro2[1], 50, 40)
   image(imagemCarro3, xCarro3[2], yCarro3[2], 50, 40)
}
  function movimentaCarrro(){
    xCarro[0]  -=velocidadeCarro[0] ;
     xCarro2[1] -= velocidadeCarro2[1];
     xCarro3[2] -= velocidadeCarro3[2];
  }
function voltaPosiçaoInicialDoCarro(){
  if (xCarro[0] < -50){
    xCarro[0] = 600
  }
}

function voltaPosiçaoInicialDoCarro2(){
  if (xCarro2[1] < -50){
    xCarro2[1] = 600
  }
}

function voltaPosiçaoInicialDoCarro3(){
  if (xCarro3[2] < -50){
    xCarro3[2] = 600
  }
}

link do meu código: https://editor.p5js.org/AlexSouza/sketches/jVcfDpVdtb

3 respostas

Oi Alex! o erro está sendo causado por conta do conflito na linha 10, onde você está chamando a função " mostrarcarro() ". Para tirar esse conflito declare as variáveis: xcarro2, ycarro2, xcarro3 e ycarro3. Assim a função vai ter a referencia para executar a sua função.

Porem você vai precisa declarar também as variaveis " velocidadecarro2 e velocidadecarro3 ", pois você também tem outra função sem referencia. ficaria assim:

https://editor.p5js.org/AlexSouza/sketches/jVcfDpVdtb

//codigo dos carros let xCarro = [600,600,600] let yCarro = [40, 96, 150] let xCarro2 = [800, 800, 800] let yCarro2 = [60, 116, 170] let xCarro3 = [1000, 1000, 1000] let yCarro3 = [80, 136, 190] let velocidadeCarro = [2, 2.5, 3.2] let velocidadeCarro2 = [2, 2.5, 3.2] let velocidadeCarro3 = [2, 2.5, 3.2]

function mostraCarro(){ image(imagemCarro, xCarro[0], yCarro[0], 50, 40) image(imagemCarro2, xCarro2[1], yCarro2[1], 50, 40) image(imagemCarro3, xCarro3[2], yCarro3[2], 50, 40) } function movimentaCarrro(){ xCarro[0] -=velocidadeCarro[0] ; xCarro2[1] -= velocidadeCarro2[1]; xCarro3[2] -= velocidadeCarro3[2]; } function voltaPosiçaoInicialDoCarro(){ if (xCarro[0] < -50){ xCarro[0] = 600 } }

function voltaPosiçaoInicialDoCarro2(){ if (xCarro2[1] < -50){ xCarro2[1] = 600 } }

function voltaPosiçaoInicialDoCarro3(){ if (xCarro3[2] < -50){ xCarro3[2] = 600 } }

solução!

Oi Alex.

let xCarro = [600,600,600] let yCarro = [40, 96, 150] let velocidadeCarro = [2, 2.5, 3.2]

Vc criou estas funções acima, pra pegar valores de posição e velocidade para os carros, Depois vc cria outras variáveis pra xCarro2 e xCarro3? Por isso, o erro : xCarro2 is not defined. E se vc corrigisse o xCarro2, aconteceria com o xCarro3. Acho que se vc declarar as variáveis pra cada um, sim funciona, mas desse jeito que vc fez não.

Se fizesse : let xCarro2 = [posição x]; let xCarro2 = [posição y]; let velocidadeCarro2 = [velocidade];

let xCarro3 = [posição x]; let xCarro3 = [posição y]; let velocidadeCarro3 = [velocidade];

image(imagemCarro, xCarro[0], yCarro[0], 50, 40) <<<< isso quer dizer que: a imagemCarro vai aparecer na posição xCarro (posição x do canvas), yCarro (posição y no canvas), e os outros dois valores se referem ao comprimento e altura dos carros.

Pra vc usar como fez: image(imagemCarro, xCarro2[1], yCarro2[1], 50, 40) ;

tens que criar variável para xCarro2 e xcarro3, Igual tem para xCarro,

O código abaixo funciona, porém, não copie! compare e corrija, vais aprender mais , pq senão, não estarei lhe ajudando. De alguma forma, vc não seguiu o instrutor, exatamente. Espero ter ajudado. Bons estudos.

//codigo dos carros
let xCarro = [600,600,600]
let yCarro = [40, 96, 150]
let velocidadeCarro = [2, 2.5, 3.2]

function mostraCarro(){
   image(imagemCarro, xCarro[0], yCarro[0], 50, 40)
   image(imagemCarro2, xCarro[1], yCarro[1], 50, 40)
   image(imagemCarro3, xCarro[2], yCarro[2], 50, 40)
}
  function movimentaCarrro(){
    xCarro[0]  -=velocidadeCarro[0] ;
     xCarro[1] -= velocidadeCarro[1];
     xCarro[2] -= velocidadeCarro[2];
  }
function voltaPosicaoInicialDoCarro(){
  if (xCarro[0] < -50){
    xCarro[0] = 600
  }
}

function voltaPosicaoInicialDoCarro2(){
  if (xCarro[1] < -50){
    xCarro[1] = 600
  }
}

function voltaPosicaoInicialDoCarro3(){
  if (xCarro[2] < -50){
    xCarro[2] = 600
  }
}

Muito obrigado a todos atravez da explicação do Romeu Oliveira consegui entender.