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

Forma diferente

Fiz dessa forma, ao invés de utilizar um valor para sentido, usei uma string de comparação. minha pergunta é se pensar dessa forma para resolver este problema pode atrapalhar ou se utilizar valores numéricos soa melhor de acordo com alguma melhor prática e tal. Obrigado desde já, estou gostando muito do curso, parabéns a todos!

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

<script>
    var tela = document.querySelector("#tela");
    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);
  }


function exibeMensagemNoConsole(){
        console.log("Chamei funcao!");
    }

var movimentoX = 20;
var direcao = "direita";

function atualizaTela(){

    if (direcao == "direita"){
        limpaTela();
        desenhaCirculo(movimentoX, 20, 10);
        movimentoX++;

        if (movimentoX == 590){
            direcao = "esquerda";
        }
    }
    if (direcao == "esquerda"){
        limpaTela();
        desenhaCirculo(movimentoX, 20, 10);
        movimentoX--;
        if (movimentoX == 10){
            direcao = "direita";
        }
    }
}

setInterval(atualizaTela, 10);

</script>
4 respostas
solução!

Olá Marcus! Existem diversas formas de resolvermos os mesmo problemas em programação. Parabéns pela iniciativa de testar novas possibilidades!

A forma que você fez é muito interessante e com o tempo você vai aprendendo qual a melhor alternativa para determinados problemas.

Também poderia ser resolvido desta forma, com uma variável booleana:

var movimentoX = 20;

    var sentidoEsquerdaDireita = true;

    function atualizaTela() {
        limpaTela();
        if (movimentoX > 590) {
            sentidoEsquerdaDireita = false;
        }
        if (movimentoX < 10) {
            sentidoEsquerdaDireita = true;
        }
        if (sentidoEsquerdaDireita) {
            movimentoX++;
        } else {
            movimentoX--;
        }
        desenhaCirculo(movimentoX, 20, 10);
    }

Abraços e sucesso nos estudos!!

Poxa André, nem dá tempo deu chegar para responder aqui no fórum! hehe!

Marcos, é o que o André disse. Existem várias formas de se fazer. Qual forma você acha mais legível para você? A sua ou a proposta pelo André? Veja que muitas vezes a escolha é do desenvolvedor, uma escolha de uma sintaxe e estratégia que seja fácil de ser compreendida para ele.

Olá Flávio! Estou sempre atento por aqui hehehe!! Tento compensar um pouco minha falta de experiência na área com os problemas que o pessoal aponta por aqui e vou atrás da solução! Além das aulas serem ótimas essa ferramenta do fórum é fantástica! Estudando para em breve poder contribuir mais.

Abraços!!

Espero encontrá-lo nos cursos avançados de JavaScript que ministro em breve.

Sucesso e bom estudo para vocês!