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

Gerador de cores aleatórias

Seguindo o conteúdo da aula me surgiu a vontade de desenvolver um sistema que gerasse um grupo de cores aleatórias em uma matriz de 10 x 10.

Para sua realização, precisei utilizar recursos não vistos neste curso, como o caso do toLocaleLowerCase(), usado para garntir que o input do usuário sempre fosse verificado em minúsculo, evitando problemas com a natureza case sensitive do Javascript.

Mas no geral foi feito uso tanto de canva, quanto de array, quando de condicionais e laços de repetição. O sistema de adicionar se tratou de um adicional interessante, que poderia ser expandido para um input type="radio" contando já as opções de "sim" ou "não". Isso ajudaria tanto na experiência do usuário, quanto a mitigação de erros.

Segue o código final na integra:

<body>
    <label for="linha">Adicionar linhas: "sim" ou "não"?</label><br>
    <input id="linha" type="text" placeholder="sim"><br><br>
    <button>Gerar novo padrão</button><br><br>
    <canvas width="500" height="500" style="border: 1px solid black;"></canvas>

    <script>
        var cores = ["#fff100", "#ff8c00", "#e81123", "#ec008c", "#68217a", "#00188f", "#00bcf2", "#00b294", "#009e49", "#bad80a"];
        var input = document.querySelector("input");
        input.focus();
        var botao = document.querySelector("button");
        var tela = document.querySelector("canvas");
        var pincel = tela.getContext("2d");

        function quadradoColorido(eixoX, eixoY, preenchimento, linha) {
            pincel.fillStyle = preenchimento;
            pincel.fillRect(eixoX, eixoY, 50, 50);
            if(linha == "sim") {
                pincel.strokeStyle = "black";
                pincel.strokeRect(eixoX, eixoY, 50, 50);
            }
        }

        function geraCores() {
            for(let x = 0; x < 500; x += 50) {
                for(let y = 0; y < 500; y += 50) {
                    var corRandom = Math.round((Math.random()*10)-1);
                    quadradoColorido(x, y, cores[corRandom], input.value.toLocaleLowerCase());
                }
            }
        }

        geraCores();

        botao.onclick = geraCores;

    </script>

O reslutado final foi este:

Matriz 10 por 10 de cores aleatórias sem linhas de contornoMatriz 10 por 10 de cores aleatórias com linhas de contorno

3 respostas

Boa tarde Lucas, tudo certo?

Cara, você está de parabéns! Fico muito feliz que você tenha conseguido ter uma visão do projeto que queria fazer e executá-lo dessa forma. O resultado final ficou incrível! Esses projetos laterais que fazemos e aplicamos os conhecimentos que obtivemos ao longo do tempo e de diversas fontes diferentes são uma ótima forma de fixar o que estamos aprendendo.

Além disso, você ainda veio aqui e relatou sobre essa experiência com a nossa comunidade, o que é fantástico e de quebra ainda ajuda os outros alunos com motivação e conteúdo.

Vou deixar aqui algumas sugestões de podcasts que me vieram à cabeça quando vi a sua obra de arte:

Arte generativa – Hipsters Ponto Tech #261

Programação criativa – Hipsters Ponto Tech #266

Continue assim e bons estudos!

Fico feliz pelo feedback! Também gostei muito dos episódios sugeridos no podcast do Hipsters Ponto Tech. Tenho trabalhado em outros projetos baseados nesse material de Canva, inclusive cheguei a criar um joguinho que já está operacional (apesar de ter alguns bugs): https://palhanor.github.io/Avoid-Black-Holes/.

Pode testar o jogo e sua jogabilidade, e se quiser pode dizer o que achou ou mesmo colaborar com o desenvolvimento!

solução!

Lucas, que sensacional! Realmente, esses projetos estão fantásticos.

Adorei as mecânicas do jogo, é um spin-off bem interessante do jogo da cobrinha hahahaha

Mas eu senti um certo delay entre os comandos de movimentação e notei que algumas vezes eles não redirecionam o jogador, recomendaria olhar como outras implementações de jogos do tipo lidam com a entrada do usuário nesse aspecto.

Continue assim e bons estudos!