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

[Proyecto] Mi solución: sencillo pero funcional

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

<script>

    var pantalla = document.querySelector("canvas");
    var pincel = pantalla.getContext("2d");
    var colores = ["blue","red","green"]
    var color = "blue";

    pincel.fillStyle = "black";
    pincel.fillRect(0,0,600,400);

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

        pincel.fillStyle = color;
        pincel.beginPath();
        pincel.arc(x,y,10,0,2*3.14);
        pincel.fill();
        console.log(x + "," + y);

    }

    pantalla.onclick = dibujarCirculo;

       var contador = 0;
    function alterarColor()  {

          contador++  
          if (contador == 0) {
              color = "blue";
          } else if (contador == 1) {
              color = "red";
          } else if (contador == 2) {
              color = "green";
          } else {
              color = "blue";
              contador = 0;
          }    
        return false;
    }

    pantalla.oncontextmenu = alterarColor;

</script>

Les comparto mi codigo porque despues de estar peleando mentalmente por mas de 2 o 3 horas intentando de usar una version con while o for me di por vencido pero encontre un codigo sencill pero con gran sentido de logica y pues creo que al final de eso se trata de encontrarle la logica y mientras mas sencillo el codigo mejor. Espero que les guste. :)

9 respuestas

Hola Angel: yo tambien me tildé con usar for para que con el bucle vaya iterando la propiedad dentro de la funcion, pero aún no lo logro. Sigo investigando...

Lo que veo de tu código, es que está muy bueno y simple, pero que a la hora de querer agregar colores, se va a complicar. Sería lo único menos positivo, pero la logica es logica y funciona!

Saludos,

Alejandra.

Gracias por el comentario Ale. La realidad soy un super novato en esto y se me hace dificil entender los bucles hasta ahora, eso fue lo mejor que me salio. A la orden siempre.

Buen día Angel y aca tambien luchando por que haer el ejercio con FOR, sin resultados aun, solo una suguerencia el primer IF: if (contador == 0) {color = "blue", es redudante ya que estas iniciando la variante en 0 y por ende ya esta en la primera poscion cuando entra a la "function". Al igual que el úlitimo ELSE es simple y funcional una gran solucion para regresar al color azul y a 0

Gracias Jorge. Lo que sucede es que puse contador == 0 porque antes de ese if hay un contador++. Y como no se de programacion pues lo puse como un seguro porque ya cuando entra a la funcion lo primero que hace es ponerse en 1 y pues el else es el reset, pero capto lo que dices. Como todo principiante me quise asegurar con el == jajaja pero igual si dijera if (contador) eso seria true igual.

Buen dia Angel. te escribo para ver si esto ayuda un poco pude hacer un ciclo FOR pero es un poco difente al que explican en clases:

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

No se ve en la foto el for pero se ve que funciona. Que bueno que lo dominaras.

Mi error

hay esta el codigo:

function alterarColor() { color++;

while (color >= colores.length ) { color = 0;

} return false; }

y de hecho es la misma sentecia con WHILE y para mi queda mejor, ya que es facil de entiender:

function alterarColor() {

color++;

while (color >= colores.length ) {

color = 0;

} return false; }

Interesante. Gracias por compartirlo. Aun no soy muy bueno con los while pero estamos practicando.

esa es la idea y gracias a ti, estaba bloqueado y al ver tu código me ayudo a salir del bloque que tenía