Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Mi solución: Creo que funciona

Fue muy difícil de pensar, la verdad. Pero, parece que funciona... Se los comparto a continuación:

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

<script>
    var pantalla = document.querySelector('canvas');
    var pincel = pantalla.getContext('2d');

    pincel.fillStyle = 'grey';
    pincel.fillRect(0, 0, 600, 400);

    pincel.fillStyle="red"
    pincel.fillRect(0,0, 50, 50);

    pincel.fillStyle="green"
    pincel.fillRect(50,0, 50, 50);

    pincel.fillStyle="blue"
    pincel.fillRect(100,0,50, 50);

    var puedoDibujar = false;
    var colorActual="blue"

    function dibujarCirculo(evento) {
        var x = evento.pageX - pantalla.offsetLeft;
        var y = evento.pageY - pantalla.offsetTop;

        if(((x<600)&&(x>150)) ||((y<400) && (y>50))){
            if(puedoDibujar) {
                pincel.fillStyle = colorActual;
                pincel.beginPath();
                pincel.arc(x, y, 5, 0, 2 * Math.PI);
                pincel.fill();
            }
        }
        else{
            if((x<=50) &&
                (x>=0) &&
                (y<=50) &&
                (y>=0)){
                colorActual="red"
            }

            if((x<=100) &&
                (x>=50) &&
                (y<=50) &&
                (y>=0)){
                colorActual="green"
            }

            if((x<=150) &&
                (x>=100) &&
                (y<=50) &&
                (y>=0)){
                colorActual="blue"
            }

        }    
    }


    pantalla.onmousemove = dibujarCirculo;

    function habilitarDibujar() {

        puedoDibujar = true;
    }

    function deshabilitarDibujar() {

        puedoDibujar = false;
    }

    pantalla.onmousedown = habilitarDibujar;

    pantalla.onmouseup = deshabilitarDibujar;

</script>

Muchas gracias por leer :). Ojalá tenga sentido la lógica que usé. Saludos.

PD: Les dejo la obra de arte que realicé para probar jaja. Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

2 respuestas

Con el código del instructor le agregué la suma del radio de la circunferencia en el primer if de la función dibujarCirculo :)

<script>
    var pantalla = document.querySelector('canvas');
    var pincel = pantalla.getContext('2d');

    pincel.fillStyle = 'grey';
    pincel.fillRect(0, 0, 600, 400);

    pincel.fillStyle="red"
    pincel.fillRect(0,0, 50, 50);

    pincel.fillStyle="green"
    pincel.fillRect(50,0, 50, 50);

    pincel.fillStyle="blue"
    pincel.fillRect(100,0,50, 50);

    var puedoDibujar = false;
    var colorActual="blue"

    function dibujarCirculo(evento) {
        var x = evento.pageX - pantalla.offsetLeft;
        var y = evento.pageY - pantalla.offsetTop;

        if(((x<600)&&(x>150+2.5)) ||((y<400) && (y>50+2.5))){
            if(puedoDibujar) {
                pincel.fillStyle = colorActual;
                pincel.beginPath();
                pincel.arc(x, y, 5, 0, 2 * Math.PI);
                pincel.fill();
            }
        }
        else{
            if((x<=50) &&
                (x>=0) &&
                (y<=50) &&
                (y>=0)){
                colorActual="red"
            }

            if((x<=100) &&
                (x>=50) &&
                (y<=50) &&
                (y>=0)){
                colorActual="green"
            }

            if((x<=150) &&
                (x>=100) &&
                (y<=50) &&
                (y>=0)){
                colorActual="blue"
            }

        }    
    }


    pantalla.onmousemove = dibujarCirculo;

    function habilitarDibujar() {

        puedoDibujar = true;
    }

    function deshabilitarDibujar() {

        puedoDibujar = false;
    }

    pantalla.onmousedown = habilitarDibujar;

    pantalla.onmouseup = deshabilitarDibujar;

</script>
solución!

Hola espero estés muy bien.

Felicitaciones por tu aprendizaje, continúa con ese empeño. Para agilizar el tiempo de respuesta en caso de dudas relacionadas con los cursos, estamos priorizando el foro para postear dudas.

En caso que desees compartir tus ejercicios o actividades dispusimos en Discord un canal exclusivo para ese fin (#compartatucodigo)

Te dejo éste link que muestra donde puedes compartir tus actividades https://www.youtube.com/watch?v=ZhXdFO6SxQ4

Si necesitas ayuda, estaremos aquí! Un saludo!

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