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

no puedo realizar el ejercicio

Hola, no puedo realizar el ej ya que en el video nunca se puso una condicion para que la funcion no siga funcionando permanente..lo que pude hacer es crear una funcion similiar pero que haga el dibujo de derecha a izquierda y llamarla, el resultado es que se me ejecutan ambas al mismo tiempo y tampoco se cumple que queden funcionando permamente, realmente no se me ocurre como lograrlo y no quiero mirar la resolución como hice otras veces por que no veo que este aprendiendo a encontrar las soluciones sin ayuda...gracias por la orientación que puedan darme!

7 respuestas

Hola Germán , espero que estés muy bien.

Una idea que te recomendamos es que escriba en un papel toda su idea y haga un fluxograma. No es malo ver la resolucion pero no copie tente enteder despues que hacer tu codigo o su fluxograma.

Te dejo este articulo para entender mejor lo que es un fluxograma https://www.devmedia.com.br/fluxogramas-diagrama-de-blocos-e-de-chapin-no-desenvolvimento-de-algoritmos/28550.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

tenes q crear una variable que determine el sentido, si el eje horizontal llega a 600px q es el limite del canvas, ese sentido se convierta de ++ a -- o sea, que el contador empiece a correr hacia el otro lado, hasta llegar a cero y comience otra vez a sumar para "avanzar" hacia la derecha. es un lio explicarlo sin mostrarte la solucion

Primero les agradezco a ambos por tomarse un tiempo para tratar de ayudarme a encontrar la solución, les comparto el codigo para ver si es más fácil orientarme, por el momento con ese codigo solo se mueve de izquierda a derecha, la alerta de consola sólo esdtá ahí para ver si el ciclo while se está ejecutando ( las alertas se ven en la consola) pero no logro que vuelva en la dirección de derecha a izquierda...muchas gracias nuevamente!!

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

    }

    var x = 0

    function actualizarPantalla(){
        if(x < 600){
            limpiarPantalla();
            disenharCircunferencia(x,20,10);
            x++;
        }
        else {
            while(x != 0){
                limpiarPantalla();
                disenharCircunferencia(x,20,10);
                x--;
                console.log("alerta");
            }

         }    
    }

    setInterval(actualizarPantalla,20);

</script> 
solución!

Germán. Revisando tu código veo que el problema está en que deberías contemplar no solo el valor de x, sino en que sentido se dirige el círculo azul.

Cuando entra al if (x < 600) por última vez hace 599 + 1 = 600 , en el próximo ciclo entra por el else, 600 - 1 = 599, entonces como se vuelve a cumplir la condición del if (x < 600) lo de abajo no se ejecuta mas.

Hice una modificación a tu código para darte una ayuda.

    if(sentido){
        limpiarPantalla();
        disenharCircunferencia(x,20,10);
        x++;
        if( x > 600){
            sentido = false;
        }
    }
    else {
         limpiarPantalla();
         disenharCircunferencia(x,20,10);
         x--;
         if (x < 0) {
            sentido = true;
        }
     } 

hola nuevamente, muchas gracias por tu ayuda, me gustaria que me puedas comentar la logica detrás de la sulocion para chequear que funciona de la forma que los estoy entendiendo...

German, lo que hago en el código es crear una variable, (llamada sentido), esto me sirve como memoria, para saber si voy de izquierda a derecha o viceversa. Está claro que solo comparando (x > 600) ó (x < 0) no es viable porque se produce una ambigüedad. Dicho de otra manera necesitamos incrementar (x++) cuando vamos hacia la derecha y decrementar (x--) cuando vamos hacia la izquierda. Solo uso los límites del canvas para cambiar el estado de la variable sentido

Muchas gracias Rodrigo por la explicación, eso mismo entendí pero quería estar seguro de como funcionaba la idea que me sugeristes..