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

Exercicio 7 - Aula 2 - Solução alternativa

Olá galera, eu solucionei o exercício 7 usando o código um pouco diferente porque não consegui pensar em como o laço poderia ser mais prático. Funfou, mas queria que vcs vissem se é só uma forma diferente ou se pode apresentar algum erro, segue:

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

<script>

    function desenhaRetangulo(x, y, largura, altura, cor) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.fillStyle=cor;
        pincel.fillRect(x,y, largura, altura);
        pincel.strokeStyle='black';
        pincel.strokeRect(x,y, largura, altura);
    }

    function desenhaTexto(x, y, texto) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.font='15px Georgia';
        pincel.fillStyle='black';
        pincel.fillText(texto, x, y);    
    }

    // aqui vem mais

    var serie2015 = [50, 25, 20, 5];
    var serie2016 = [65, 20, 13, 2];
    var cores = ['blue', 'green', 'yellow', 'red'];

    function desenhaBarra(x, y, serie, cores, texto) {
        desenhaRetangulo(x, y, 50, serie [0], cores [0]);
        desenhaRetangulo(x, y + serie [0], 50, serie [1], cores [1]);
        desenhaRetangulo(x, y + serie [0] + serie [1], 50, serie [2], cores [2]);
        desenhaRetangulo(x, y + serie [0] + serie [1] + serie [2], 50, serie [3], cores [3]);

        desenhaTexto(x + 10 , y -10, texto);


}

    desenhaBarra(50, 50, serie2015, cores, "2015");
    desenhaBarra(150, 50, serie2016, cores, "2016"); 

</script>

Deixei o "X" do desenha texto com +10 porque achei um pouco mais centralizado XD

1 resposta
solução!

Boa noite, Rômulo! Como vai?

Volta e meia na programação nós nos deparamos com essas situações onde temos mais de uma forma de resolver um determinado problema! Vc acabou de ver isso na prática ao resolver o exercício de um modo diferente da forma como o instrutor resolveu! E isso é mto bom pq demonstra que vc está absorvendo o conteúdo e que sabe se virar sozinho!

Sobre a sua pergunta, o único problema que vc poderia ter é se houvesse uns 100 navegadores para comparar por ano! Se esse fosse o caso, sua função desenhaBarra() ficaria impraticável de ser codificada! Seria algo assim:

function desenhaBarra(x, y, serie, cores, texto) {
     desenhaRetangulo(...); // desenha retângulo do primeiro navegador
     desenhaRetangulo(...);  // desenha retângulo do segundo navegador
     desenhaRetangulo(...);  // desenha retângulo do terceiro navegador
     desenhaRetangulo(...);  // desenha retângulo do quarto navegador
     // chama a função desenhaRetangulo() outras 96 vezes...

     desenhaTexto(...);
}

Reparou a dor de cabeça que iria dar?

DESAFIO: Vc é um cara que demonstrou lidar bem com problemas e se virar achando uma solução sua! Eu te desafio a resolver esse problema utilizando uma laço de repetição dentro da sua função desenhaBarra() de modo a evitar esse problema que acabei de te mostrar!

Grande abraço e bons estudos!