1
resposta

Bom demais!!! Um pouco corrido, mas consegui realizar o último exercício. Tá aí pra galera ver.

    // funções declaradas de acordo com a ordem decrescente

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

        pincel.fillStyle = cor;
        pincel.fillRect(x, y, tamanho, tamanho)
        pincel.fill();
    }

    function desenhaPaletaDeCores() {

        desenhaQuadrado(xVermelho, yQuadrados, tamanhoQuadrados, 'red');
        desenhaQuadrado(xVerde, yQuadrados, tamanhoQuadrados, 'green');
        desenhaQuadrado(xAzul, yQuadrados, tamanhoQuadrados, 'blue');

    }

    function desenhaCirculo(x, y, raio, cor) {

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * 3.14);
        pincel.fill();

    }


    function habilitaDesenhar(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        console.log(x, y);

        // se caso o click encontra-se em uma determinada área estipulada pelas condições seguintes, entao se altera o valor de uma variável
        if ((x > 0)
                && (x < 50)
                    && (y > 0)
                        && (y < 50)) {
            corAtual = 'red'
        }
        if ((x > 50)
                && (x < 100)
                    && (y > 0)
                        && (y < 50)) {
            corAtual = 'green'
        }
        if ((x > 100)
                && (x < 150)
                    && (y > 0)
                        && (y < 50)) {
            corAtual = 'blue'
        }

        // altera a variável usada pelo bloco da função, a qual a sua condição é um valor boolean 
        desenha = true;
    }

    function desabilitaDesenhar() {

        desenha = false;
    }

    function lidaComMovimentoDoMouse(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        console.log(x, y);

        // a condição aninhada abaixo, depende do valor dos eixo, para garantir que em uma determinada área nao se execute o conteúdo do seu bloco
        if (desenha) {

            if ((x > 3 * tamanhoQuadrados) && (y > tamanhoQuadrados - 50)
                || (x > tamanhoQuadrados - 50) && (y > tamanhoQuadrados)) {

                desenhaCirculo(x, y, 2, corAtual);
            }
        }
    }

    // variáveis declaradas de acordo com a ordem decrescente de chamada

    var yQuadrados = 0;
    var xVermelho = 0;
    var xVerde = 50;
    var xAzul = 100;
    var tamanhoQuadrados = 50;
    var desenha = false;
    var corAtual = '';

    // chamadas de funções e eventos na ordem decrescente 

    desenhaPaletaDeCores(); // mostra os quadrados de seleção de cores, chamando com parenteses para executar a função

    tela.onmousedown = habilitaDesenhar;

    tela.onmouseup = desabilitaDesenhar;

    tela.onmousemove = lidaComMovimentoDoMouse;
1 resposta

Oi, Ibsen! Tudo bom contigo?

Antes de tudo, agradeço a paciência em aguardar um retorno!

Fico muito feliz que tenha gostado. É muito importante para o desenvolvimento da Alura o feedback das alunas e dos alunos!

Parabéns pela realização do exercício. Gostei muito da forma pela qual você organizou seu código e utilizou comentários para melhorar a compreensão dele, continue sempre realizando essas boas práticas!

Aliás, caso se sinta confortável em compartilhar o que praticou com mais pessoas, deixo como indicação acessar a comunidade da Alura no Discord. Conversas, divulgação de projetos e dúvidas são algumas das coisas que encontramos por lá.

Para saber um pouco mais sobre esse espaço de comunicação, basta acessar os links abaixo:

Fico à disposição para te ajudar caso surjam dúvidas ao decorrer dos seus estudos.

Grande abraço, Ibsen!