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

Diseñando con el mouse - Pregunta sobre optimizar programa

<canvas width="900" height="800"></canvas>

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

    var i;
    var j;

    var radio = 15;
    var puedoDibujar = false;

    var marcadorRectangulo = 8;
    var marcadorCirculo = 0;

    var color = ["red","green","blue","pink","orange","lightgrey","lightblue","black","white"];

    dibujarRectangulo(0,0,900,800,8);
    paletaColores();
    paletaColoresCanvas();        

    pantalla.onmousedown = habilitarDibujar;
    pantalla.onmouseup = deshabilitarDibujar;
    pantalla.onmousemove = dibujarPunto;
    pantalla.oncontextmenu = limpiarPaleta;
    pantalla.onclick = cambiarColor;

    function paletaColores(){    
        for (j=0;j<color.length;j++){
            dibujarRectangulo(j*50,0,50,50,j);
        }
    }

    function paletaColoresCanvas(){    
        for (j=0;j<color.length;j++){
            dibujarRectangulo(j*50,750,50,50,j);
        }
    }

    function limpiarPaleta(){
        dibujarRectangulo(0,0,900,800,marcadorRectangulo);
        paletaColores();
        paletaColoresCanvas();
        return false;
    }    

    function dibujarRectangulo(x,y,w,h,marcadorRectangulo){
        pincel.fillStyle = color[marcadorRectangulo];
        pincel.strokeStyle = "black";
        pincel.fillRect(x,y,w,h);
        pincel.strokeRect(x,y,w,h);
    }

    function dibujarCirculo(x,y){
        pincel.fillStyle = color[marcadorCirculo];
        pincel.beginPath();
        pincel.arc(x,y,radio,0,2*Math.PI);
        pincel.fill();
    }

    function dibujarPunto(evento){
        if(puedoDibujar){
            var x = evento.pageX - pantalla.offsetLeft;
            var y = evento.pageY - pantalla.offsetTop;
            dibujarCirculo(x,y); 
        }
    }

    function habilitarDibujar(){
        puedoDibujar=true;
    }

    function deshabilitarDibujar(){
        puedoDibujar=false;
    }

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

        for (i=0;i<color.length;i++){
            if ((x > (i*50))&&
                (x < (i*50 + 50))&&
                (y > 0)&&
                (y < 60)){
                    marcadorCirculo = i;
                    paletaColores();
                    paletaColoresCanvas();
                }
            if ((x > (i*50))&&
                (x < (i*50 + 50))&&
                (y > 740)&&
                (y < 800)){                
                    marcadorRectangulo = i;
                    limpiarPaleta();
                }
        }
    }

</script>
3 respuestas

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Realice el ejercicio agregando mas colores a la paleta de los requeridos en el ejercicio, ademas agregue una segunda paleta de colores, con la misma gama, para el canvas de fondo, con el botón derecho realizo un clear del canvas con el ultimo color de fondo seleccionado. El programa es funcional, pero siento que podría optimizarse un poco, o quizás mejorar el formato para que sea mas claro para que una persona ajena al codigo pueda entenderlo. Cualquier aporte es bienvenido asi pueda mejorar mis costumbres de programación. si hay algo que corregir para estandarizar el proceso me gustaria saberlo. Es mejor corregir los malos habitos ahora que estoy empezando, que mas avanzada en la carrera. Me encanto este curso, realmente siento que fue un gran avance ya que empecé programación desde cero, y por alguna razón no puedo parar de intentar mejorar cada uno de los programas propuestos.

¡Hola, Maria! Deseo que esté bien.

Muchas gracias por compartir tu proyecto con nosotros. Estamos muy contentos de poder acompañarte en tu camino de aprendizaje.

En lo esencial, en el foro estamos priorizando las dudas y errores.

Para compartir tus proyectos con nosotros y otros estudiantes, te recomiendo que lo haga en nuetro servidor de Discord.

Continúa con tus estudios y hasta la proxima.

¡Vamos juntos!

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