1
resposta

Lógica de programação II: pratique com desenhos, animações e um jogo

Olá :D

Em um primeiro momento fiz dessa forma. Queria saber porque minha barra azul dos dois gráficos ficaram diferentes.

Quebrei cabeça e não entendi! Nesse código o porquê dessa diferença.

<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);    
    }

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

function desenhaBarra(x, w, h, serie, cores, texto){




desenhaTexto(10 + x, 10, texto)

        var  posição = 3

        desenhaRetangulo(0 +x, serie[0] + serie[1] + serie[2] + serie[3], w, h, cores[posição]);
        posição--
        desenhaRetangulo(0 +x, serie[0] + serie[1] + serie[2], w, h, cores[posição]);
        posição--
        desenhaRetangulo(0 +x, serie[0] + serie[1], w, h, cores[posição]);
        posição--
        desenhaRetangulo(0 +x, serie[0] , w, h, cores[posição]);
        posição--




}

desenhaBarra(0, 50, 50, serie2015, cores, '2015')

desenhaBarra(100, 50, 50, serie2016, cores, '2016')




</script>

Obrigado :D

1 resposta

Fala, Marcos! Tudo bem contigo?

A diferença está na variável serie2016

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

Se alterarmos e deixarmos iguais, fica perfeito

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

Se quiser ir testando para entender o passo a passo, comente a ultima linha da função desenhaBarra

        //desenhaRetangulo(0 + x, serie[0], w, h, cores[posição]);
        posição--

Rode no navegador e verá que o azul vai sumir. Também analise cada parâmetro e quando entra na serie[0], por ter tamanhos diferentes, imprime diferenças no navegador.

Espero ter ajudado, Marcos!!!

Um abraço e bons estudos!