1
resposta

Dúvida sobre lógica de programação (return)

Estou conseguindo concluir todas as atividades até agora, no entanto, este código:

function voltaPosicaoInicialDoCarro() {
  for (let i = 0; i < imagemCarros.length; i += i){
  if (passouTodaATela(xCarros [i])){
    xCarros[i] = 600}
    }
}

function passouTodaATela(xCarro){
  return xCarro < -50;
}

Mesmo tendo funcionado, não entra na minha cabeça. Qual a lógica envolvida em "function passouTodaATela(xCarro)"? Aparentemente eu posso trocar "xCarro" por qualquer coisa se eu trocar na linha abaixo também... por que isso é possível? Além disso, a verificação "if" tem muitos parênteses e ficou confusa para mim também.

Agradeço se alguém puder me iluminar em relação a isso.

1 resposta

Falaaaaa Bruno, bom dia! Tudo bem com contigo?

Esta função passouTodaATela(), espera um valor como parâmetro. Dentro do parêntese, ao criar a função, você poderia escolher escrever qualquer nome, por exemplo: passouTodaATela(param) , passouTodaATela(a) ou ainda, o que realizamos nesta aula passouTodaATela(xCarro). Neste link tem alguns conceitos que poderão te ajudar.

Usamos o mesmo nome de uma variável existente no nosso código, para ficar mais legível o que estamos realizando nesta função.

Podemos dizer que, a nossa função passouTodaATela() espera um parâmetro primitivo (um número neste caso) e passamos este número para ela quando chamamos ela dentro da função voltaPosicaoInicialDoCarro, no IF :

function voltaPosicaoInicialDoCarro() {
  for (let i = 0; i < imagemCarros.length; i += i){
  if (passouTodaATela(xCarros [i])){
    xCarros[i] = 600}
    }
}

O legal desta função, é que, se você quiser, reutilizá-la, mais pra frente, por conta própria, acrescentar mais funções ao jogo, você pode! :D . Por exemplo: (Vamos deixar o parâmetro com nome genérico)

function passouTodaATela(parametro){
  return parametro < -50;
}

Se chamarmos a função com o eixo Y do ator, podemos usar para validar quando o ator passa da tela para cima, e alcançando esta condição(< -50), implementarmos uma mudança de fase. "A Vaca não foi atropelada, chegou no topo da tela, fase 2 . Chegou no topo da Tela de novo, Fase 3", e assim por diante. basta chamar a função com yAtor passouTodaATela(yAtor) dentro do da nova função que fará a mudança da fase.

Sobre os parênteses, do if: estrutura do if é

if(  ){
}
if (       passouTodaATela(xCarros [i])         ){
    xCarros[i] = 600}
    }

O parêntese seguinte, é da chamada do parâmetro esperado da função. Deixei espaços para visualizar melhor

Espero ter ajudado. Abraços, tamo junto!