Con questo programma scritto tramite Processing,
"Rosso, Verde, Blu", ho voluto mettermi alla prova per vedere a che
livello di programmazione fossi arrivato con questo linguaggio. Il programma di
per se è molto semplice, attraverso tre barre, una rossa, una verde ed una blu,
è possibile variare il valore del relativo colore da un minimo di 0 ad un
massimo di 255 (il valore impostato è visualizzabile attraverso un numero posto
all'interno delle barre), visualizzando il risultato tramite un cerchio posto
alla destra delle tre barre. In più sono presenti due pulsanti per colore, uno
con il testo "min", posto al di sotto, per riportare a zero il valore
del colore, e l’altro con il testo "MAX", posto sopra, per portare al
massimo il valore del colore, ovvero 255.
PROGRAMMA:
float Ry = 0; //variabili per i tre colori primari
float Gy = 0;
float By = 0;
float Xr = 25; //posizione della barra rossa
float Yr = 75;
float Hr = 0;
float Xg = 100; //posizione della barra verde
float Yg = 75;
float Hg = 0;
float Xb = 175; //posizione della barra blu
float Yb = 75;
float Hb = 0;
float C = 280;
void setup(){
size(400, 400);
background(0);
textFont(createFont("verdana", 10));
textAlign(CENTER);
}
void draw(){
// rettangolo rosso
fill(255, 0, 0);
stroke(255, 0, 0);
rect(Xr, Yr, 50, 255);
Hr = 255-Ry;
fill(0, 0, 0);
rect(Xr, Yr, 50, Hr);
fill(255, 255, 255);
text(Ry, (Xr+25), C); //valore di rosso
//istruzione per variare il valore di rosso
if ((mouseX>Xr) && (mouseX<(Xr+50)) && (mouseY>Yr) && (mouseY<(Yr+255)) && (mousePressed)){
Ry = (330-mouseY);
}
fill(255, 255, 255);
noStroke();
rect(Xr, 340, 50, 50);
//pulsante per portare il valore del rosso a 0
if((mouseX>Xr) && (mouseX<(Xr+50)) && (mouseY>340) && (mouseY<390) && (mousePressed)){
Ry = 0;
}
fill(255, 255, 255);
noStroke();
rect(Xr, 15, 50, 50);
//pulsante per portare il valore del rosso a 255
if((mouseX>Xr) && (mouseX<(Xr+50)) && (mouseY>25) && (mouseY<75) && (mousePressed)){
Ry = 255;
}
fill(255, 0, 0);
text("min", 50, 365);
fill(255, 0, 0);
text("MAX", 50, 40);
// rettangolo verde
fill(0, 255, 0);
stroke(0, 255, 0);
rect(Xg, Yg, 50, 255);
Hg = 255-Gy;
fill(0, 0, 0);
rect(Xg, Yg, 50, Hg);
fill(255, 255, 255);
text(Gy, (Xg+25), C); //valore di verde
//istruzione per variare il valore di verde
if ((mouseX>Xg) && (mouseX<(Xg+50)) && (mouseY>Yg) && (mouseY<(Yg+255)) && (mousePressed)){
Gy = (330-mouseY);
}
fill(255, 255, 255);
noStroke();
rect(Xg, 340, 50, 50);
//pulsante per portare il valore del verde a 0
if((mouseX>Xg) && (mouseX<(Xg+50)) && (mouseY>340) && (mouseY<(390)) && (mousePressed)){
Gy = 0;
}
fill(255, 255, 255);
noStroke();
rect(Xg, 15, 50, 50);
//pulsante per portare il valore del verde a 255
if((mouseX>Xg) && (mouseX<(Xg+50)) && (mouseY>25) && (mouseY<75) && (mousePressed)){
Gy = 255;
}
fill(0, 255, 0);
text("min", 125, 365);
fill(0, 255, 0);
text("MAX", 125, 40);
// rettangolo blu
fill(0, 0, 255);
stroke(0, 0, 255);
rect(Xb, Yb, 50, 255);
Hb = 255-By;
fill(0, 0, 0);
rect(Xb, Yb, 50, Hb);
fill(255, 255, 255);
text(By, (Xb+25), C); //valore di blu
//istruzione per variare il valore di blu
if ((mouseX>Xb) && (mouseX<(Xb+50)) && (mouseY>Yb) && (mouseY<(Yb+255)) && (mousePressed)){
By = (330-mouseY);
}
fill(255, 255, 255);
noStroke();
rect(Xb, 340, 50, 50);
//pulsante per portare il valore del blu a 0
if((mouseX>Xb) && (mouseX<(Xb+50)) && (mouseY>340) && (mouseY<(390)) && (mousePressed)){
By = 0;
}
fill(255, 255, 255);
noStroke();
rect(Xb, 15, 50, 50);
//pulsante per portare il valore del blu a 255
if((mouseX>Xb) && (mouseX<(Xb+50)) && (mouseY>25) && (mouseY<75) && (mousePressed)){
By = 255;
}
fill(0, 0, 255);
text("min", 200, 365);
fill(0, 0, 255);
text("MAX", 200, 40);
//cerchio per la visualizzazione del risultato ottenuto
fill(Ry, Gy, By);
stroke(#FFFFFF);
ellipse(317, 200, 80, 80);
<<Pagina precedente Pagina successiva>>
Nessun commento:
Posta un commento