1
resposta

"Uma inofensiva flor"

Oi gente, tinha feito um post bem escrito, com mais detalhes, mas ele teve algum problema na hora de ser enviado, então aqui vou só resumir e pedir um feedback do meu código =)

Queria dizer que aprendi muito com esse exercício, comecei a programar fazem poucos dias, mas estava seguindo um caminho muito linear dentro do curso. Com esse exercício eu me propus a fazer algo ligeiramente mais complexo pois com o que aprendi até aqui seria possível, mas insatisfeito com os resultados, isso me fez buscar, testar funções e coisas que ainda não tinha aprendido por ainda estar nessa etapa do curso.

Enfim um exercício que deveria ser feito em menos de 2 minutos mas acabou levando quase 2 dias até me satisfazer:

<style>
    body {
        background-color: rgb(26, 31, 32);
    }
</style>
<body onload="clickei()">
    <canvas width="600" height="400"></canvas>
    <br>
    <button onclick="zerar()">Zerar</button>
    <button onclick="clickei()">+1</button>
    <script>
        const tela = document.querySelector('canvas');
        const senoArr = [];
        const cosArr = [];
        const w = 600;
        const h = 400;
        const r = 90;
        let pincel = tela.getContext('2d');
        let petalas = 0;

        function zerar(){
            petalas = 0;
            clickei()
        }

        function clickei(){

        senoArr.length = 0;
        cosArr.length = 0;

        pincel.fillStyle = 'rgb(23, 59, 83)';
        pincel.fillRect(0, 0, 600, 400);
        pincel.fillStyle = 'rgb(6, 196, 22)';
        pincel.fillRect(w / 2 - 8, h / 2, 16, h / 2);

        function circulo(x, y, r2, cor) {
            pincel.fillStyle = cor;
            pincel.beginPath();
            pincel.arc(x, y, r2, 0, 2 * Math.PI);
            pincel.fill();
        }

        function quantidadePetalas(petalas) {
            if (petalas <= 2) {
                r2 = 85;
            } else {
                r2 = 50 + 100 / petalas;
            }
        }

        for (i = 1; i <= petalas; i++) {
            senoArr.push(Math.sin(Math.PI / 180 * 360 / petalas * i));
            cosArr.push(Math.cos(Math.PI / 180 * 360 / petalas * i));
        }

        quantidadePetalas(petalas);

        for (i = 0; i < senoArr.length; i++) {
            catetoO = senoArr[i] * r;
            catetoA = cosArr[i] * r
            circulo(x = w / 2 + (catetoO), y = h / 2 + (catetoA), r2, `rgb(${randomN()}, ${randomN()}, 200)`);
        }

        function randomN(min, max) {
            min = Math.ceil(255);
            max = Math.floor(50);
            return Math.floor(Math.random() * (max - min)) + min;
        }
        circulo(w / 2, h / 2, r, 'rgb(255, 255, 255)');
        petalas++;
    }
    </script>
</body>

Espero que possam me dar um feedback sobre =)

*Me desculpem, o código não deve estar tão bom de ler, por ser novo em programação e (desculpe a sinceridade) preguiça de escrever declaracoesQueSaoMuitoGrandesPoremAutoExplicativas, porém como são poucas e elas possuem um sentido, espero não impactar tanto na compreensão.

1 resposta

Bom dia!

Sua resolução ficou excelente! Você fez um ótimo uso do aprendizado.

Parabéns pelo empenho nos estudos e continue praticando.

Sua programação está em ótimo nivel, dado seu conhecimento. Sua forma de programar é limpa e facil de entender.

Para que mais pessoas consigam visualizar a sua solução proposta, é recomendado que você marque este tópico como solucionado. Assim pode ajudar ainda mais pessoas :)

Bons estudos!