2
respostas

Código diferente mas funciona também!

Bom, completando minha saga aqui no Logica II, venho mostrar meu código!

Ele faz o que a atividade propõe (talvez nao tenha o requinte do professor).

Optei por usar todos os ifs dentro da function lidaComMovimentoDoMouse para escolher a cor (já que essa funçao tá recebendo o X e Y do mouse) e também ja decidi que , se X e Y do mouse estiverem no X e Y da paleta de cores, a variavel desenha se torna false e, portanto, não haverá desenho!

Fica meu código para analise de vcs, companheiros!

<meta charset="UTF-8">
<canvas id='tela' width=600 height=400></canvas>

<script>

    function desenhaQuadrado(x,y,tamanho,cor) {
        pincel.fillStyle = cor;
        pincel.fillRect(x,y,tamanho,tamanho);
    }

    function desenhaCirculo(x,y,raio,cor) {
        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x,y,raio,0,2*Math.PI);
        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(x >= xVermelho && x < xVerde && y > yQuadrados && y < tamanhoQuadrados) {
            corAtual = 'red';
        }

        if(x >= xVerde && x < xAzul && y > yQuadrados && y < tamanhoQuadrados) {
            corAtual = 'green';
        }

        if(x >= xAzul && x < (xAzul + tamanhoQuadrados) && y > yQuadrados && y < tamanhoQuadrados) {
            corAtual = 'blue';
        }

        if(x >= xVermelho && x <= (xAzul + tamanhoQuadrados) && y > yQuadrados && y < tamanhoQuadrados) {
            desenha = false;
        }

        if(desenha) {
            desenhaCirculo(x,y,5,corAtual);
        }
    }

    function habilitaDesenhar() {
        desenha = true;
    }

    function desabilitaDesenhar() {
        desenha = false;
    }

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

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

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

    desenhaPaletaDeCores();

    tela.onmousemove = lidaComMovimentoDoMouse;
    tela.onmousedown = habilitaDesenhar;
    tela.onmouseup = desabilitaDesenhar;

    </script>
2 respostas

Programar não é participar do MasterChef então para quem está começando não é necessário ter requinte, apenas funcionar.

Você está de parabéns pois criou sua própria solução. O requinte vem com o tempo. Quando mais praticar mais requintado será seu código.

Eu não testei seu código pois não estou na minha máquina, mas olhando sua estrutura está original, parabéns. É mesmo que tivesse um ponto errado o mérito seria seu, pois não me copiou.

Agora um exercício talvez seja entender a minha solução e verificar qual você prefere. Quem manda no seu código é você! Tentar escrever menos e manter a legibilidade é um desafio para nós programadores.

Sucesso e bom estudo Lucas.

Boa Lucas, a principio a única mudança eu que faria seria declararia as variáveis antes das funções, assim facilitando a leitura e manutenção do código, pois manter as coisas em ordem fica melhor.

Abraçooos e parabeeens \o/