Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Ator parou de movimentar - Qual é a lógica?

Olá, pessoal.

Após concluir a aula sobre marcar os pontos, o meu ator havia parado de se movimentar. Achei no fórum a solução e deu certo, mas gostaria de entender melhor a lógica que a Sarah explicou.

Segue o link: https://cursos.alura.com.br/forum/topico-ator-parou-de-movimentar-296971

Alguém poderia me ajudar?

  • Por que é necessário comentar ou excluir a função voltaAtorParaPosiçãoInicial()? E quando fazemos isso, por que ela (a função) ainda continua funcionando?
  • E por que ele deve ficar necessariamente abaixo da função movimentaAtor()?

Estou iniciando os estudos em Programação e esse curso é justamente para reforçar os conceitos de lógica, por isso gostaria de entender melhor.

Desde já, muito obrigado!!

1 resposta
solução!

Oi, Nickolas! Tudo bem?

Podemos conferir, de acordo com a documentação, que a função draw() é responsável por executar continuamente os comandos que estão escritos dentro dela até que o programa seja interrompido, ou seja, enquanto o nosso jogo estiver rodando todos os comandos declarados dentro da função draw() serão executados não apenas uma vez, mas em um loop constante.

Dessa forma, é necessário excluir ou comentar a função voltaAtorParaPosiçãoInicial(), pois apesar da função movimentaAtor() declarada ser responsável por garantir a movimentação do ator, a função draw() repete em um ciclo constante a função voltaAtorParaPosiçãoInicial(), que posiciona o ator na posição inicial. Dessa maneira, é como se estivéssemos a cada instante definindo a posição yAtor = 366, logo, ele fica constantemente preso nessa posição.

Quando comentamos ou excluímos a função voltaAtorParaPosiçãoInicial(), ela continua sendo declarada no documento ator.js e continua sendo utilizada e executada em outras funções dentro desse documento. Em contrapartida, quando a retiramos da função draw() estamos apenas impedindo que o ator a todo instante declare a sua posição y como 366, ficando presa nela.

Dessa forma, ele ficando abaixo ou acima da função movimentaAtor() acaba comprometendo a posição do ator da mesma forma, já que a função draw() é uma espécie de função que executa os seus comandos constantemente em loop, enquanto o jogo estiver rodando.

Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓