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

Qual o erro do meu código

function trocaBandeiras(){
    
    for (let i = 0; bandeira < bandeira.length; i++) {
        bandeira[i]
        if(i>2){
            i = 0;
        }
    }
       return bandeira[i]
}
setInterval(trocaBandeiras, 3000);
1 resposta
solução!

Oi, Pedro, tudo bem?

Ao usar o forpara criar um loop de repetição, você esqueceu de definir uma variável bandeira contendo uma lista com as duas funções que desenham tanto a bandeira da Alemanha quanto a bandeira do Brasil:

var bandeira = [desenhaBandeiraBrasil(), desenhaBandeiraAlemanha()]

Outro ponto importante é que dentro do foro elemento i vai ser percorrido a lista criada pela variável bandeira, de modo que ficaria assim:

i < bandeira.length;

Por fim, esse código realiza uma tarefa e ao concluir exibe sempre a mesma resposta, apenas uma das bandeiras, sem realmente realizar a alternância entre elas, como solicitado na atividade. Portanto, para conseguir realizar essa alternância das bandeiras seria interessante utilizar estruturas condicionais sem a presença de um laço de repetição. Ficaria assim:

var mostraBrasil = true;

function trocaBandeira() {

    if(mostraBrasil == true) {
        desenhaBandeiraBrasil();
        mostraBrasil = false;
    } else {
        desenhaBandeiraAlemanha();
        mostraBrasil = true;
    }
}

setInterval(trocaBandeira, 3000);

Nessa função:

var mostraBrasil = true;

Declara uma variável chamada mostraBrasil e a inicializa com o valor true. Essa variável será usada para controlar qual bandeira deve ser exibida.

if(mostraBrasil == true) {
   desenhaBandeiraBrasil();
   mostraBrasil = false;
}

Verifica se a variável mostraBrasil é igual a true. Se for verdadeira, significa que a última bandeira exibida foi a do Brasil. Se a condição acima for verdadeira, chama a função desenhaBandeiraBrasil(), que contém o código para desenhar a bandeira do Brasil. Em seguida, define mostraBrasil como false, indicando que a próxima bandeira a ser exibida será a da Alemanha.

else {
   desenhaBandeiraAlemanha();
   mostraBrasil = true;
}

Se a condição anterior for falsa, significa que a última bandeira exibida foi a da Alemanha. Nesse caso, chama a função desenhaBandeiraAlemanha(), que provavelmente contém o código para desenhar a bandeira da Alemanha. Em seguida, define mostraBrasil como true, indicando que a próxima bandeira a ser exibida será a do Brasil.

setInterval(trocaBandeira, 3000);

Define um intervalo de tempo usando setInterval para chamar a função trocaBandeira a cada 3000 milissegundos (3 segundos). Isso resulta na troca periódica entre as bandeiras do Brasil e da Alemanha.

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!