Olá,
Eu estava estudando o código que criamos na lição e me surgiu alguns questionamentos.
No código seguinte:
function movimentaAtor(){
if (keyIsDown(UP_ARROW)){
yAtor -= 3;
}
if (keyIsDown(DOWN_ARROW)){
if (limiteTelaInferior()){
yAtor += 3;
}
}
}
function limiteTelaInferior(){
return yAtor < 463;
}
A função limiteTelaInferior() não possui parâmetro entre os parênteses e o valor booleano de yAtor < 463; é passado direto.
Já em:
function voltaPosicaoInicialCarro(){
for (let i = 0; i < imagemCarros.length; i++){
if (passouTodaATela(xCarros[i])){
xCarros[i] = 830;
}
}
}
function passouTodaATela(x){
return x < - 50;
}
A função passouTodaATela(x) possui como parâmetro o x , em que x é substituído por xCarros[i] .
Aí surgiu um questionamento:
É possível, ao invés de utilizar o parâmetro x, retornar o valor booleano de xCarros[i] < - 50;, utilizando a mesma "estrutura" do primeiro código que postei?
Testei o seguinte:
function voltaPosicaoInicialCarroTeste(){
for (let i = 0; i < imagemCarros.length; i++){
if (passouTodaATelaTeste()){
xCarros[i] = 830;
print(i)
}
}
}
function passouTodaATelaTeste(){
for (let i = 0; i < imagemCarros.length; i++){
return xCarros[i] < - 50;
}
}
Porém quando inicio o jogo, apenas o primeiro carro tem sua posição resetada, ou seja, o índice i permanece 0 e não é incrementado de 1 em 1.
Alguém pode explicar por que isso ocorre e como o código deveria ser escrito? (apesar de ser desnecessário escrever dessa forma, gostaria de entender a sintaxe)