2.3. Segunda parte: estructuras de control
2.3.5. Soluciones a los ejercicios del reto
Solución al ejercicio planteado al final del apartado de condicionales
var figura = "cuadrado"; // Cambiad este valor para probar el ejercicio function setup() { createCanvas(400, 400); } function draw() { background(200); if (figura == "círculo") { ellipse(200,200,100,100); } if (figura == "cuadrado") { rect(150,150,100,100); } }
Degradado vertical
for (var i=0; i<=255; i++ ) { stroke(i); line(xIni,yIni+i,xIni+256,yIni+i); }
Degradado horizontal pero de blanco a negro
for (var i=0; i<=255; i++ ) { stroke(256-i); line(xIni+i,yIni,xIni+i,yIni+256); }
Triángulo degradado
for (var i=0; i<=255; i++ ) { stroke(i); line(xIni,yIni+i,xIni+i,yIni); }
Degradado oblicuo
for (var i=0; i<=255; i++ ) { stroke(i); line(xIni,yIni+i,xIni+i,yIni); } for (var i=0; i<=255; i++ ) { stroke(256-i); line(xIni+i,yIni+256,xIni+256,yIni+i); }
Solución al ejercicio del reloj
Iremos viendo el código poco a poco.
Primero, tenemos el bucle que hacemos con la instrucción for:
for (var i=0;i<60;i++){
Repetimos 60 veces porque 60 son los minutos y segundos que tiene un reloj.
Dentro de este for tenemos cuatro if:
if (i % 5 == 0) { stroke(0); line(0, -40, 0, -60); }
Este primero nos dibuja todas las líneas del reloj. No queremos pintar las 60 líneas, sino que solo pintamos una por cada 5 minutos (igual que en un reloj). Por eso calculamos el residuo de dividir los minutos por 5 y pintamos si el residuo es 0 (es un múltiplo de 5).
Segundo if:
if (i == (horas % 12 * 5)) { stroke(255,0,0); line(0, -40, 0, -70); }
Este dibuja la manecilla de las horas. Miramos la hora que es (está guardada en la variable horas), calculamos el residuo de dividir por 12 (porque las horas van de 0 a 23 y así pasamos a horas de 0 a 11) y multiplicamos por 5 (para buscar el minuto adecuado para pintar esta hora). Pintamos las horas de color rojo y, además, hacemos la raya algo más larga.
Tercer if:
if (i == minutos) { stroke(0,0,255); line(0, -40, 0, -70); }
Pintamos la manecilla de los minutos. Como tenemos 60 minutos, esto es más fácil, pintaremos aquella raya que coincida con los minutos actuales. También la hacemos más larga y además de color verde.
Y cuarto if:
if (i == segundos) { stroke(255); line(0, -40, 0, -60); }
Es lo mismo que los minutos. En este caso pintamos de blanco.
Probad el ejercicio y cambiad los valores que creáis conveniente.