/* Frío & Caliente: una composición en la cual se representa "fuego" por medio de una forma rectangular de color inicial rojo
y en donde aparecen particulas azules representando "chorros de agua" que caen apagando poco a poco la llama (representado por
cambios de color) hasta extinguirla completamente, al suceder esto, los chorros de agua tambien se apagan*/
// Variables de posición del "fuego"
ArrayList particles;
float posX=0; // Posición en X
float posY=200; // Posición en Y
boolean down=true; // Dirección hacia abajo del "fuego"
void setup() {
size(400,400); // Tamaño de la ventana
particles = new ArrayList();
smooth();
}
void draw() {
particles.add(new Particle()); // Se añaden las particulas de agua
background(255,255,235); // Color del fondo
for (int i = 0; i < particles.size(); i++ ) {
Particle p = (Particle) particles.get(i);
p.run();
p.gravity();
p.display();
}
// Si el ArrayList tiene más de 490 particlas de agua, estas se eliminan inmediatamente
if (particles.size() > 490) {
particles.remove(490);
}
// Se dibuja el "fuego" en forma de rectángulo
if ((down==true) && (posY<=600)) {
if ((posY>=0) && (posY<=600)) {
posY=posY+0.4;
noStroke ();
fill (255,54,0); // Color inicial de la forma rectangular
rect (0, posY, 400, 200);
}
if (posY>250) { // Si la posición en Y del fuego es mayor a 250...
fill (255,93,50); //...cambia de color
rect (0, posY, 400, 200);
down=true;
}
if (posY>300) { // Si la posición en Y del fuego es mayor a 300...
fill (255,143,113); //...cambia de color
rect (0, posY, 400, 200);
down=true;
}
if (posY>350) { // Si la posición en Y del fuego es mayor a 350...
fill (255,198,183); //...cambia de color
rect (0, posY, 400, 200);
down=true;
}
}
loop();
}
// Dujar las partículas de agua
class Particle {
float x;
float y;
float xspeed; // Variable de velocidad de caida en X
float yspeed; // Variable de velocidad de caida en Y
Particle() {
x = 200; //Posición en X desde donde arranca el flujo de partículas de agua
y = -3; //Posición en y desde donde arranca el flujo de partículas de agua
xspeed = random(-8,8);
yspeed = random(0);
}
void run() {
x = x + xspeed;
y = y + yspeed;
}
void gravity() {
yspeed += 0.8; // Velocidad de caida
}
void display() {
stroke(0);
fill(75,75, 255); // Color de las partículas de agua
ellipse(x,y,5,5); // Tamaño de las partíclas
}
}
// CRISTHIAN GRANADOS & ARTURO HERNÁNDEZ