Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Trocando as Bandeiras de outra forma:

Bem vou compartilhar com vocês a forma que usei para implementar o exercício:

<canvas width="600" height="400"></canvas>

<script>

var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');

function desenhaBandeiraBrasil(){
    pincel.fillStyle="green";
    pincel.fillRect(0, 0, 600, 400);

    pincel.fillStyle="yellow";
    pincel.beginPath();
    pincel.moveTo(300, 50);
    pincel.lineTo(50, 200);
    pincel.lineTo(550, 200);
    pincel.fill();

    pincel.beginPath();
    pincel.moveTo(50, 200);
    pincel.lineTo(300, 350);
    pincel.lineTo(550, 200);
    pincel.fill();

    pincel.fillStyle = 'darkblue';
    pincel.beginPath();

    pincel.arc(300, 200, 100, 0, 2 * Math.PI);
    pincel.fill();

}

function desenhaBandeiraAlemanha(){

    pincel.fillStyle = 'black';
    pincel.fillRect(0, 0, 600, 133);

    pincel.fillStyle = 'red';
    pincel.fillRect(0, 133, 600, 133);

    pincel.fillStyle = 'yellow';
    pincel.fillRect(0, 266, 600, 133);

}

var troca = 1;

function trocaBandeira(){

    if(troca <= 1){

        desenhaBandeiraBrasil();

        troca++;

    } else if(troca >= 2){

        desenhaBandeiraAlemanha();

        troca--;

    }

}

setInterval(trocaBandeira, 300);


</script>

Eu só uso o:

var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');

No inicio e da certo, eu não coloco ele sempre que chamo uma função de desenho, talvez esteja fazendo algo errado.

E a troca da bandeira eu consegui pensar assim:

var troca = 1;

function trocaBandeira(){

    if(troca <= 1){

        desenhaBandeiraBrasil();

        troca++;

    } else if(troca >= 2){

        desenhaBandeiraAlemanha();

        troca--;

    }

}

setInterval(trocaBandeira, 300);

Menos elegante mais funcional rsrs.

4 respostas

Independente da estética do código, o que esperamos neste curso de lógica é que o aluno consiga resolver os problemas apresentados, que não são fáceis para quem esta começando.

Como instrutor quero lhe dar os parabéns pela sua solução, pois você deve ter gasto um tempo batalhando para criá-la.

Como se diz no MasterChef Brasil, "pode subir para o mezanino".

Sucesso e bom estudo Pablo!

Realmente, ficou maravilha agora é só analisar como enxugar o código um pouco mais. Mas meus parabéns!!!

solução!

Olá! Adorei a sua resolução, bem simples e eficaz.

Porém, observei que a variável "troca" sempre será 1 e 2. Então, enxugando ainda mais o código e sem necessidade de utilizar "maior igual" e "menor igual", poderia ficar dessa forma o trecho:

function trocaBandeira(){
    if(troca == 1){
        desenhaBandeiraBrasil();
        troca++;
    } else {
        desenhaBandeiraAlemanha();
        troca--;
    }

}

Espero que seja útil :)

Excelente Ana! Como o post do Pablo está há 2 meses sem ser fechado, marcarei sua resposta como solução, pois contribuiu para deixar o código dele ainda melhor.