Oi, Jackeline! Tudo bem?
Desde já, peço desculpas pela demora em retornar.
Diferentemente das outras funções do nosso jogo, passouTodaATela()
e colidiu()
acontecem somente em momentos específicos e, por esse motivo, não precisam estar em draw()
. Para compreender melhor isso, vamos analisar o trecho de código abaixo:
function voltaPosicaoInicialDoCarro(){
for (let i = 0; i < imagemCarros.length; i++){
if (passouTodaATela(xCarros[i])){
xCarros[i] = 600;
}
}
}
A função voltaPosicaoInicialDoCarro()
, por exemplo, é chamada dentro de draw()
, pois a ação que ela realiza (verificar se a posição do carro ultrapassou o limite e, se sim, retorná-lo para o início da estrada) é constante e não depende de outros fatores. Por outro lado, passouTodaATela()
não precisa estar dentro de draw()
, tendo em vista que já é chamada em voltaPosicaoInicialDoCarro()
— fazendo com que, de maneira implícita, ela também faça parte de draw()
.
Na programação, é comum segmentar atividades para tornar o desenvolvimento mais consistente e de fácil compreensão. Logo, caso quiséssemos, poderíamos unir as atividades das duas funções em uma só função, a qual estaria em draw()
. Contudo, dessa forma perderíamos o poder que o Javascript nos proporciona.
Assim, quando uma função não é chamada em draw()
e mesmo assim faz parte do nosso jogo, possivelmente ela estará atrelada a outra função, como no caso que vimos acima.
Jackeline, espero que tenha compreendido minha explicação. Fico à disposição para ajudá-la caso surjam outras dúvidas.
Forte abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.