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

Acredito que essa forma tenha ficado mais otimizada

Olá! Consegui realizar a tarefa normalmente, e quando fui conferir com a resposta do professor, achei que as variáveis não foram tão bem otimizadas.

Ele realiza várias contas para estabelecer valores de X para cada cor, sendo que a variável tamanhoQuadrados define basicamente tudo do programa, afinal os próximos sempre irão iniciar no dobro do tamanho, ou em 3x o mesmo.

Dessa forma que fiz, qualquer usuário ficaria livre para mudar apenas duas definições: o tamanho do quadrado, e o tamanho do raio que ele gostaria de desenhar... o restante se adapta a essas informações.

<meta charset="UTF-8">

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

<script>

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

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

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

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

    }

    function desenhaPaletaDeCores() {

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

    }

    function lidaComMovimentoDoMouse(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;

        if(desenha) {

            if(x <= 3*tamanhoQuadrados + raio && y <= tamanhoQuadrados + raio) {
                desenha = false;
                alert("Você não pode desenhar em cima da paleta");                
            }

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

    function habilitaDesenhar() {

        desenha = true;
    }

    function desabilitaDesenhar() {

        desenha = false;
    }

    function clica(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        defineCor = corAtual;

        if(x <= tamanhoQuadrados && y <= tamanhoQuadrados) {
                corAtual = 'red'
            }
            if(x >= tamanhoQuadrados && x <= 2*tamanhoQuadrados && y <= tamanhoQuadrados) {
                corAtual = 'green'
            }
            if(x >= 2*tamanhoQuadrados && x <= 3*tamanhoQuadrados && y <= tamanhoQuadrados) {
                corAtual = 'blue'
            }
    }

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

    var tamanhoQuadrados = 60;
    var raio = 5;
    var defineCor;
    var desenha = false;
    var corAtual = defineCor;
    var xVermelho = 0;
    var xVerde  = tamanhoQuadrados;
    var xAzul = 2*tamanhoQuadrados;
    var yQuadrados = 0;


    desenhaPaletaDeCores(); // mostra os quadrados de seleção de cores

    tela.onclick = clica;

    tela.onmousemove = lidaComMovimentoDoMouse;

    tela.onmousedown = habilitaDesenhar;

    tela.onmouseup = desabilitaDesenhar;

</script>
1 resposta
solução!

Fala, Cauã! Tudo bem contigo?

Obrigado por compartilhar conosco!

Perfeito!

Tenho certeza que vai contribuir muito com nossa comunidade dentro da plataforma.

Qualquer dúvida nos procure, meu amigo!

Um abraço e bons estudos!!!