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

Exercicio do curso de Lógica de Programação II

Olá!

Esta é a minha primeira postagem no forum, sou muito novo neste mundo de programação, estou tendo muita dificuldade com alguns exercícios e outros até consigo fazer, mas estou curtindo muito este novo mundo. :D \0/

Eu tenho uma dúvida em relação a uma proposta de exercício do Módulo 03, aula 6.

O enunciado do exercício era assim:

Aproveitando o código feito nas aulas anteriores ,altere o código para que o círculo, assim que chegar no canto direito da tela, volte. No final, o círculo deve ficar indo e voltando eternamente.

A lógica do exercício eu fiz, e conforme foi proposta, mas comparando o que eu fiz, com o que o professor fez, ficou muito diferente, fico na dúvida se eu viajei demais, ou da forma que eu fiz não é uma boa prática, ou esta mesmo errado a forma que eu fiz.

Segue o código que eu fiz:

<canvas id="canvas" width="1000" height="400"></canvas>

    <script>
        // Definido o tipo, tamanho e cor do canvas
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');
        pincel.fillStyle = 'lightgray';
        pincel.fillRect(0, 0, 600, 400);

        // Definindo o raio, eixo X, eixo Y e declarando uma variavel para startar a animacao da bolinha
        var raio = 10;
        var posicaoEixoX = 10;
        var posicaoEixoY = 20;
        var animarObjeto = true;

        function desenhaCirculo(eixoX, eixoY, raio, cor) {
            pincel.fillStyle = cor;
            pincel.beginPath();
            pincel.arc(eixoX, eixoY, raio, 0, 2 * Math.PI);
            pincel.fill();
        }

        function limpaTela() {
            pincel.clearRect(0, 0, 600, 400);
        }

        function  atualizaTela() {

            // Inicia a animacao do ponto 20 do eixo X
            // e faz o inclemento de 1 em 1, e verifica
            // se a variavel que da inicio a animacao e true
            if (animarObjeto) {
                limpaTela();
                desenhaCirculo(posicaoEixoX,posicaoEixoY, raio, 'red');
                posicaoEixoX++;

                // Verifica se eixo X e igual a 590 e desliga a variavel com false
                // para parar de incrementar o eixo X
                if (posicaoEixoX == 590) {
                    animarObjeto = false;
                }

            }
            // Inicia a animacao do ponto 590 do eixo X
            // e faz o decremento de 1 em 1, e verifica
            // se a variavel que da inicio a animacao e false
            else if (!animarObjeto) {
                limpaTela();
                desenhaCirculo(posicaoEixoX,posicaoEixoY, raio, 'red');
                posicaoEixoX--;

                // Verifica se eixo X e igual a 10 e liga a variavel com false
                // para parar o decremento do eixo X
                if (posicaoEixoX == 10) {
                    animarObjeto = true;
                }
            }

        }

        setInterval(atualizaTela, 5);

    </script>

Segue o código que o professor fez como alternativa para resolver o exercício:

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

<script>

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

    function desenhaCirculo(x, y, raio) {

        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }

    function limpaTela() {

        pincel.clearRect(0, 0, 600, 400);
    }

    var x = 20;

    var sentido = 1;

    function atualizaTela() {

        limpaTela();

        if( x > 600) {
            sentido = -1
        } else if (x < 0) {
            sentido = 1;
        } 

        desenhaCirculo(x, 20, 10);
        x = x + sentido;
    }

    setInterval(atualizaTela, 10);

</script>

Bom, é isso, desde já agradeço a todos pela ajuda!

3 respostas
solução!

Olá, Daniel.

No meu ponto de vista você não viajou de mais. Quando eu comecei a programar também tinha a mesma preocupação que você, fazer a melhor prática possível. Nesse momento eu recomendo você estudar e continuar fazendo códigos igual a este que você fez, não é porque ele é um código diferente do professor que está ruim, na verdade o fato de o código ser diferente e ainda sim ter chegado no objetivo proposto pelo exercício, só mostra que você está entendo como se programa de verdade e está entendendo o base da programação -- lógica.

E sobre boas práticas você já está fazendo algumas coisas bem interessantes, como:

  • Bons nomes de variáveis, como essas:
      var raio = 10;
          var posicaoEixoX = 10;
          var posicaoEixoY = 20;
          var animarObjeto = true;
  • Isolando códigos que você precisa usar mais de uma vez em funções, como você vez aqui:
    function desenhaCirculo(eixoX, eixoY, raio, cor) {
      pincel.fillStyle = cor;
      pincel.beginPath();
      pincel.arc(eixoX, eixoY, raio, 0, 2 * Math.PI);
      pincel.fill();
    }
  • Código indentado

A única prática que não fazemos muito quando estamos no nosso dia a dia como desenvolvedor é o uso de comentários pra explicar um código que está fácil de ler. Mas por outro lado eu uso bastante quando estou estudando uma nova tecnologia, porque os comentários me ajudam a fixas o conhecimento que estou estudando, por tanto se você estiver utilizando os comentários pra estudar, eu recomendo você continuar.

Bons estudados man :-)

Olá, Marco.

Obrigado pelo feedback e dicas, fico muito feliz em saber que estou conseguindo algum progresso nesta "engatinhada" em programação.

Valeu mesmo!!!

Estamos aí Daniel. Se aparecer mais dúvidas é só falar. :-)