Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Funciona, pero está bien como lo implemente?

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

<script>
    var pantalla = document.querySelector("canvas");
    var pincel = pantalla.getContext("2d");        
    pincel.fillStyle = "lightgrey";
    pincel.fillRect(0,0,600,400); 

    function disenharCircunferencia(x,y,radio){
        pincel.fillStyle = "blue";
        pincel.beginPath();
        pincel.arc(x,y,radio,0,2*Math.PI);
        pincel.fill();
    }    

    function limpiarPantalla(){

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

    }

    function actualizarPantalla(){
        limpiarPantalla();
        disenharCircunferencia(x,20,10);
        if(!vuelve && x < 600) {
            x++;
            if(x == 600) {
                vuelve = true;
            }
        } else {
            if(vuelve && x > 0){
                x--;
                if(x == 0){
                    vuelve = false;
                }
            }
        }


    }

    var x = 0
    var vuelve = false;

    setInterval(actualizarPantalla,5);

</script> 
2 respuestas
solución!

Hola compañero Marcos, te vas a dar cuenta que en programación para solucionar un problema se puede realizar de muchas formas aunque en progmamas mas grandes siempre se busca el camino mas simple y optimizado para este ejercicio lo veo bien aunque se lee raro la parte de crear un else y luego dentro el if(vuelve && x > 0){ ya que eso lo ubieras podido crear en una misma linea algo asi:

else  if(vuelve && x > 0) {
                x--;
                if(x == 0){
                    vuelve = false;
                }
        }

De resto creo que esta bien, de todos modos te comparto una forma un poco mas corta de tu solución a esa función.

function actualizarPantalla(){
        limpiarPantalla();
        disenharCircunferencia(x,20,10);
        if(!vuelve && x < 600) {
            x++; 
        } else {
            x--;    
        }
        if(x == 600) {
            vuelve = true;
        } else if (x == 0){
            vuelve = false
        }
    }

Saludos!

Hola, yo lo hice parecido pero no me cerraba del todo, pero gracias a sus respuestas pude entenderlo, gracias!