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

Função que gera barra de fração customizada

Segue uma função para gerar uma barra de fração automaticamente, com posição e dimensões inseridos na chamada da função.

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

<script>

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

    pincel.fillStyle = 'lightgrey';
    pincel.fillRect(0, 0, 600, 400);
    pincel.strokeStyle = 'black';
    pincel.strokeRect(0, 0, 600, 400);

    function desenhaQuadrado(x, y, tamanho, cor) {

        pincel.strokeStyle = 'black';
        pincel.fillStyle = cor;

        pincel.fillRect(x, y, tamanho, tamanho);
        pincel.strokeRect(x, y, tamanho, tamanho);
    }

    function desenhaFracao(x, y, tamanhoQuadrado, numerador, denominador, corNumerador) {

        //Numerador indica quantas partes do inteiro foram utilizadas (quadrados pintados).
        //Denominador indica a quantidade máxima de partes em que fora dividido o inteiro.
        //Os quadrados não preenchidos são a diferença entre o denominador e o numerador.

        var quadradosRestantes = denominador - numerador;
        var posicaoInicialRestantes = x +(numerador * tamanhoQuadrado);

        for(var i = 1; i <= numerador; i++) {

            desenhaQuadrado(x, y, tamanhoQuadrado, corNumerador);
            x += tamanhoQuadrado;

        }

        for(var i = 1; i <= quadradosRestantes; i++) {

            desenhaQuadrado(posicaoInicialRestantes, y, tamanhoQuadrado, 'white');
            posicaoInicialRestantes += tamanhoQuadrado;
        }
    }



    desenhaFracao(150, 200, 30, 1, 4, 'green');
</script>
2 respostas
solução!

A função desenhaFração pode receber 6 argumentos, mas na chamada passa 7 argumentos.

Ah, sim. Engano meu.

É que quando planejei a função, pensei em poder escolher também a cor dos quadrados restantes, mas vi que não ficaria legal e que o melhor seria branco mesmo.

Esqueci de tirar ali no final.

Vou editar.

Obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software