2
respostas

Cores Aleatórias

Olá, Modifiquei o código um pouco para praticar.. Adicionei uma função para gerar cores aleatórias e fiz a função desenhaQuadrado desenhar uma quantidade de quadrados na horizontal e na vertical, utilizando as cores aleatórias.

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

<script>

    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d");

    function corRandom() {

        var cores = ["blue", "yellow", "red", "green", "black", "grey", "orange", "lightblue", "lightgreen", "pink"];
        var random = Math.round(Math.random() * 9);
        var corAleatoria = cores[random];
        return corAleatoria;
    }

    function desenheQuadrado(corBorda, largura, altura, qtdadeH, qtdadeV){

        var x = 0;
        var y = 0;
        var contador = 1;
        var contador1 = 1;

        while(contador <= qtdadeV){

            while(contador1 <= qtdadeH){

                pincel.fillStyle = corRandom();
                pincel.fillRect(x, y, largura, altura);
                pincel.strokeStyle = corBorda;
                pincel.strokeRect(x, y, largura, altura);
                contador1++;
                x += largura;
            }
            x = 0;
            y += altura;
            contador1 = 1;
            contador++;

        }
    }

    desenheQuadrado( "black", 50, 50, 12, 8);


</script>

Eu queria saber se existe uma forma melhor de gerar as cores aleatórias, sem a necessidade de preencher o array das cores manualmente.

2 respostas

Tem sim, amigo! Usa o código hexadecimal. como em

pincel.fillStyle = "#FF0000";

Ou ainda, pra não precisar usar hexadecimal:

pincel.fillStyle = "rgb(255, 0, 0)";

Se estiver certinho e tiver ajudado, marca o tópico como solucionado, por favor.

Mais uma coisa, Lucas. No seu código, você sorteia um número entre 0.0 e 1.0. Dessa forma, ao multiplicar por 9, teremos um número no intervalo aberto (0, 9). Ao arredondar, você tem o dobro de chance pra um número no interior do intervalo (3, por exemplo) do que pros que estão na extremidade (o 0 e o 9), dessa forma, as cores nas pontas têm menos chances de serem sorteadas. Pode não ser um problema neste caso, mas outros problemas podem ter complicações por isso.