Oie,
A função 'passouTodaATela' não é declarada na função 'draw' principal e mesmo assim funciona. Qualquer outra função que eu não declarar em ''function draw' não funciona. Pq essa funcionou e pq essa eu não precisei declarar?
Grata, Shaini
Oie,
A função 'passouTodaATela' não é declarada na função 'draw' principal e mesmo assim funciona. Qualquer outra função que eu não declarar em ''function draw' não funciona. Pq essa funcionou e pq essa eu não precisei declarar?
Grata, Shaini
Olá Shaini!
Sabemos que a função draw() é responsável por renderizar todos os elementos na tela, certo? Então assim, tudo o que se refere ao código do comportamento desses elementos e os próprios elementos devem estar sendo chamados a partir da função draw(). Mas o que está acontecendo com passouTodaATela()? Se você for analisar a função draw() podemos perceber que ela está chamando a função voltaPosicaoInicialDoCarro(), portando todo código dentro desta função está também associado à função draw():
function draw() {
background(imagemDaEstrada);
mostraAtor();
mostraCarro();
movimentaCarro();
movimentaAtor();
voltaPosicaoInicialDoCarro();
}
Agora, vamos analisar esta função, pois parece que ela é a responsável por voltar a posição inicial do carro. Ao analisar perceba que nela há uma estrutura condicional que chama a função passouTodaATela(), e a condição é "se passou toda tela (eixo x do carro i )", o i é o incrementador, e o laço de iteração/repetição for indica que a função passouTodaATela() que está dentro de voltaPosicaoInicialDoCarro(), está analisando a posição do eixo x de cada carro:
function voltaPosicaoInicialDoCarro(){
for (let i = 0; i < imagemCarros.length; i = i + 1){
if (passouTodaATela(xCarros[i])){
xCarros[i] = 600;
}
}
}
function passouTodaATela(xCarro){
return xCarro < - 50;
}
Concluindo, a função voltaPosicaoInicialDoCarro() (que está sendo chamada dentro da função draw()), também está chamando uma função que é a passouTodaATela(), sendo assim passouTodaATela() é uma depêndencia da função voltaPosicaoInicialDoCarro(), pois é nesta função que é verificado se o carro passou toda tela ou não. Viu só? Funções podem funcionar como uma boneca russa, mesmo não estando diretamente relacionadas, elas podem sim estarem correlacionadas. Se você já estudou um pouco sobre HTML, pode pensar na hierarquia de tags HTML, onde você pode ter um descendente direto "tag Mãe e Filha" e a filha também pode ter filhas, e assim por diante...
olá Shaini, a função passouTodaATela é declarada dentro da função voltaPosicaoInicial, nesse caso sempre que o programa executa a função voltaPosicaoinicial ele executa junto a função passouTodaATela.
No mundo javascript, podemos declarar uma função dentro de outra e também dentro de variáveis, durante o curso nos declaramos as funções dentro da function draw, por que precisamos de algo que faça com que as funções sejam executadas mais de uma vez de forma automática e continua, A function draw basicamente é uma função de loop uma vez que ela e chamada dentro do código ela fica executado ele sem parar ate que seja dado o comando para parar.
To deixando um link para a documentação do p5.js, lá explica a fundo como a function draw funciona e como funciona o p5.js https://p5js.org/reference/#/p5/draw
espero ter ajudado.