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

Desenhe obras de arte

Fiz assim e deu certo, acerto sugestão de melhoria

só vejo que em comparação com minha resposta e do professor que o código dele é mais dinâmico e sucessível a alterações

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Desafio Final</title>
</head>
<body>
    <meta charset="UTF-8">

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

    <script>

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

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

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

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

        }

        function desenhaPaletaDeCores() {

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

        }

        function lidaComMovimentoDoMouse(evento) {

            x = evento.pageX - canvas.offsetLeft;
            y = evento.pageY - canvas.offsetTop;

            if (desenha && !((x - 5 <= 150) && (y - 5 <= tamanhoQuadrados))) {                
                desenhaCirculo(x, y, 5, corAtual);
            }
        }

        function habilitaDesenhar() {

            desenha = true;
        }

        function desabilitaDesenhar() {

            desenha = false;
        }

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

        context.fillStyle = 'lightgray';
        context.fillRect(0, 0, 600, 400);

        var desenha = false;
        var corAtual = 'blue';

        var x;
        var y;

        var xVermelho = 0;
        var xVerde = 50;
        var xAzul = 100;

        var yQuadrados = 0;
        var tamanhoQuadrados = 50;
        var areaPaletaDeCores = 150

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

        canvas.onmousemove = lidaComMovimentoDoMouse;

        canvas.onmousedown = habilitaDesenhar;

        canvas.onmouseup = desabilitaDesenhar;

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

        canvas.addEventListener('click', trocaCor)

    </script>
</body>

</html>
1 resposta
solução!

Olá, Wesley! Tudo bem por aí?

Sua solução está correta, mandou bem.

Caso tenha ficado com alguma dúvida não deixe de compartilhar com a gente.

Bons estudos e até mais!

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