sabato 21 febbraio 2015

Processing - Rosso, Verde, Blu

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);
}

il risultato ottenuto è:


<<Pagina precedente                                                                           Pagina successiva>>

Nessun commento:

Posta un commento