1
resposta

Solução utilizando função

Tá ai galera !

Utilizei uma função para "Verificar a posição" , se ela já chegou em 600 ela ativa uma variável que é usada como parâmetro para saber o sentido (Direita/Esquerda)

Deixei o mais claro possível porém qualquer erro ou melhorias só mandar aqui na respostas!

<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);

    var x = 20 ; 
    var y = 20 ;
    var sentidoEsquerda = true ;
    function desenhaCirculo(x, y, raio,cor) {

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

    function limpaTela(){

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

    function verificaPosicao(){

        if(x == 600){
            sentidoEsquerda = true ;


        } 
         else if (x == 0){
            sentidoEsquerda = false ;

        }

    }
    function atualizaTela(){
        verificaPosicao();
        limpaTela();
        desenhaCirculo(x,y,10,"blue");

        if(sentidoEsquerda){
            x = x - 1;
        } else{


            x++;
        }

   }

   setInterval(atualizaTela,1)



</script><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);

    var x = 20 ; 
    var y = 20 ;
    var sentidoEsquerda = true ;
    function desenhaCirculo(x, y, raio,cor) {

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

    function limpaTela(){

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

    function verificaPosicao(){

        if(x == 600){
            sentidoEsquerda = true ;
            y = y +5;

        } 
         else if (x == 0){
            sentidoEsquerda = false ;
            y = y +5;
        }

    }
    function atualizaTela(){
        verificaPosicao();
        limpaTela();
        desenhaCirculo(x,y,10,"blue");

        if(sentidoEsquerda){
            x = x - 1;
        } else{


            x++;
        }

   }

   setInterval(atualizaTela,1)



</script>
1 resposta

Olá, João Victor! Tudo bem por aí?

Excelente, sua solução está correta, parabéns!

Caso tenha alguma dúvida não deixe de compartilhar.

Bons estudos e até mais!