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

[Duda] Como generar una nueva figura dentro del código

Comparto el código desarrollado del reto del cambio de sentido o ping pong del círculo.

Tengo claro cómo podría insertar una nueva figura con una posición distinta, lo que no logro descifrar es lo que debo modificar en el código para que ambas figuras se muevan a la misma velocidad o a una velocidad distinta.

Muchas gracias

<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;
    var sentido = 1;

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

    setInterval(actualizarPantalla,10);

</script>
2 respuestas

Hola Ádan, espero que estés bien.

Para agregar una nueva figura al código, puedes utilizar la función "disenharCircunferencia" que ya tienes definida, pero con diferentes valores de posición y tamaño para la nueva figura.

Para mover ambas figuras a la misma velocidad, puedes definir una variable "velocidad" y utilizarla para sumar o restar a la variable "x" en la función "actualizarPantalla". De esta forma, ambas figuras se moverán a la misma velocidad.

Aquí te dejo el código modificado para que puedas agregar una nueva figura y moverlas a la misma velocidad:

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

    var velocidad = 1; // Velocidad de movimiento de las figuras

    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 x1 = 0; // Posición inicial de la primera figura
    var sentido1 = 1;

    var x2 = 200; // Posición inicial de la segunda figura
    var sentido2 = -1;

    function actualizarPantalla(){
        limpiarPantalla();
        if(x1 > 600){
            sentido1 = -1;
        }
        else if(x1 < 0){
            sentido1 = 1;
        }
        if(x2 > 600){
            sentido2 = -1;
        }
        else if(x2 < 0){
            sentido2 = 1;
        }
        disenharCircunferencia(x1,20,10);
        disenharCircunferencia(x2,50,20);
        x1 = x1 + (sentido1 * velocidad);
        x2 = x2 + (sentido2 * velocidad);
    }

    setInterval(actualizarPantalla,10);

</script>

Si tienes dudas, aquí estaremos para apoyarte :)

¡Saludos!

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

En verdad muchas gracias, lo leí primero para que me hiciera sentido y después ya lo ví funcionando.

Que tengas un excelente inicio de semana.

Saludos !!!