Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

Que alguien me explique, por favor.

en este fragmento del código cuando x > 600 entonces sentido = 1, ok pero al cumplirse la segunda condición en la siguiente iteración no debería cumplirse de nuevo la primera condición volviendo a ser x >= 600? por que continua la variable sentido con valor -1?

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

        disenharCircunferencia(x,20,10);
        x = x + sentido;
    }
4 respuestas

pruebalo así:

    let x = 0    
    let sentido = 1
    function actualizarPantalla(){
        pincel.fillStyle = "lightgrey";
        pincel.fillRect(0,0,600,400);

        if(x > 600){
            sentido = -1;
        }else if(x < 0){
            sentido = 1;
        }
        disenharCircunferencia(x,20,10);
        x = x + sentido;    
    }    
    setInterval(actualizarPantalla,  10) 

Hola Pablo, resolviendo tu duda rápidamente, podemos analizar esa parte que te genera conflicto en particular. en general se tiene un if-else el cuál como se sabe controla el sentido hacia dónde va la circunferencia que se está dibujando.

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

Si observas se tiene una condición que menciona que es unicamente "x>600", no "x>=600", ya que si fuera así si realizaría lo que tienes en mente y se mantendría en una orilla de la pantalla, pero al no tener ese igual hace que se pueda realizar lo siguiente.

Primero, al verificar la primera condición de nuestro if, podemos notar que el valor de x va a ser menor que 600, por lo tanto va a entrar en el else, sin embargo dentro de este else se tiene otro condicional if, el cuál verifica que ese valor de x se mantenga positivo(mayor que cero), por lo tanto no realizará ninguna acción de las que se encuentran en estos condicionales y mantendrá el sentido en 1 positivo. Posteriormente, al llegar a 601 (está sumando 1 hasta llegar a ese número, debido a que la condición del if dice que debe ser mayor que 600) se ingresa al primer condicional if ya que la condición se está presentando, realiza el cambio en el sentido, que ahora sera de -1(uno negativo) y el valor en x comenzará a descender. Al igual que al inicio, al estar en el rango de 1 a 600 no se realizará ninguna acción por no cumplir con las condicionales. Por último, al llegar a un valor de -1(menos uno) este entrará en el else y cumplirá la condición del if que se encuentra dentro, cambiando así el sentido a un valor de 1 positivo y comenzando a incrementar el valor hasta llegar a 601 y repitiendo el procedimiento que te acabo de explicar.

Si tienes alguna duda no tengas miedo de preguntar, espero haberte ayudado.

10/10 sí, ya me quedó claro, gracias :)