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

O Código funciona mas eu não entendi!

Olá! Assim que li o enunciado pensei que o programa devia fazer somente uma borda a mais e não fazer um quadrado branco! Pensando nisso eu escrevi o seguinte código!

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

<script>

    function desenhaQuadrado(x,y,tamanho,cor) {
        var tela = document.getElementById("tela");
        var pincel = tela.getContext("2d");

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

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

    }

    function desenhaBorda(x,y,tamanho,cor) {
        var tela = document.getElementById("tela");
        var pincel = tela.getContext("2d");

        pincel.strokeStyle = cor;
        pincel.strokeRect(x,y,tamanho,tamanho);
    }

    var tamanho = 50;
    var x = 0

    while(x <= tamanho*2) {
        desenhaQuadrado(x,0,tamanho, "green");
        x = x + tamanho;
        desenhaBorda(x,0,tamanho, "black");
    }

</script>

Em que pese ele funcione (e faça realmente uma borda a mais sem um quadrado), eu fiquei em dúvida do porque! Não sei se existe isso, ou se estou fazendo algo errado - de fazer o código, ele funcionar mas eu nao entender o porque. Tudo bem se meu codigo funcionar por acidente? hehe

Pela leitura do meu código, eu pensava que não haveria a pintura da ultima borda! Mas ele pinta mesmo assim!

Não sei se alguem consegue me explicar, mas ficaria grato se pudesse ver a opinao de vcs! Obg!

2 respostas
solução!

Oi Lucas, percebe que o desenhaBorda recebe o próximo x. Então você sempre manda uma borda a mais no loop. Aí, na próxima iteração, ele preenche o espaço.

Nossa... realmente! O código ta pintando a borda antes do quadrado ser preenchido.

E as bordas estao sendo repetidas ali na própria funcao desenhaQuadrado (esqueci o trecho do fillStroke lá!)

Me desculpem se a pergunta foi boba hehe, é a primeira vez que meu código "por acidente"!

Obrigado pelo esclarecimento!