Fire f;
YouDied yd;
Embers e;
void setup() {
size(400,400);
println("Press X to light the bonfire");
f = new Fire();
e = new Embers();
yd = new YouDied();
}
void draw(){
background (0);
noStroke();
/////BONFIRE UNLIT/////
//Hilt//
fill(85,26,0);
rect(140,90,10,20);
rect(150,80,10,10);
rect(160,90,10,40);
rect(150,110,10,10);
rect(170,120,10,20);
rect(180,130,10,20);
rect(190,140,10,30);
rect(190,150,30,10);
rect(210,140,20,10);
rect(230,130,10,10);
rect(180,160,10,10);
rect(170,170,10,10);
rect(160,180,10,10);
//Blade//
fill(150);
rect(190,170,10,20);
rect(200,160,20,50);
rect(210,180,20,40);
rect(230,200,10,60);
rect(220,220,30,20);
rect(230,240,30,20);
rect(240,260,30,30);
//Ashes//
fill(255,250,196);
rect(180,320,170,10);
rect(190,310,120,10);
rect(200,300,90,10);
rect(210,290,80,10);
rect(240,280,50,10);
rect(260,270,10,10);
rect(140,330,20,10);
rect(220,330,40,10);
rect(280,330,20,10);
rect(310,330,20,10);
rect(360,330,30,10);
fill(138,135,106);
rect(190,310,80,10);
rect(230,300,10,10);
rect(250,300,20,10);
rect(260,290,10,10);
rect(210,320,40,10);
rect(300,320,10,10);
/////Light fire/////
f.light();
/////Fire becomes bigger/////
f.grow();
/////Text fades in/////
yd.death();
/////Embers are created/////
e.create();
/////Embers rise/////
e.rise();
/////Embers reset/////
e.respawn();
}class Embers {
float[] ember=new float[6];
Embers() {
ember[0]=230;
ember[1]=200;
ember[2]=170;
ember[3]=230;
ember[4]=250;
ember[5]=210;
}
int emberSpawn=0;
void create() {
/////Creates floating embers upon pressing X/////
if (key == 'x' || key == 'X') {
emberSpawn=255;
}
fill(242, 134, 47, emberSpawn);
rect(300, ember[0], 10, 20);
rect(280, ember[1], 10, 10);
rect(260, ember[2], 10, 20);
rect(250, ember[3], 10, 20);
rect(210, ember[4], 10, 10);
rect(190, ember[5], 10, 20);
}
void rise() {
/////Embers rise at different rates/////
if (key =='x' || key == 'X') {
ember[0]--;
ember[1]=ember[1]-2;
ember[2]=ember[2]-3;
ember[3]=ember[3]-1.5;
ember[4]=ember[4]-3;
ember[5]--;
}
}
void respawn() {
/////Embers reset after reaching a certain height/////
if (ember[0]<=30) {
ember[0]=230;
}
if (ember[1]<=20) {
ember[1]=200;
}
if (ember[2]<=10) {
ember[2]=170;
}
if (ember[3]<=25) {
ember[3]=230;
}
if (ember[4]<=10) {
ember[4]=250;
}
if (ember[5]<=30) {
ember[5]=210;
}
}
}class Fire{
boolean fireLit=false;
int sparkTransparency=0;
int sparkTime=0;
int fireTransp=0;
void light(){
/////Fire sparks upon pressing X/////
if(keyPressed){
if(key == 'x' || key == 'X'){
sparkTransparency=255;
sparkTime++;
}
} else {
sparkTransparency=0;
}
/////Spark turns to full fire after a split second/////
if(sparkTime>=2.5){
sparkTransparency=0;
fireTransp=255;
}
/////Spark shapes/////
fill(255,255,50,sparkTransparency);
rect(230,290,20,10);
rect(220,280,40,10);
rect(240,270,40,10);
rect(240,230,10,40);
rect(260,240,10,30);
fill(255,0,0,sparkTransparency);
rect(280,260,10,10);
rect(300,240,10,10);
rect(260,210,10,10);
rect(240,200,10,20);
rect(210,260,10,10);
rect(180,240,10,10);
rect(170,230,10,10);
}
void grow(){
/////Full fire shapes/////
fill(255,255,100,fireTransp);
rect(230,280,20,20);
rect(250,280,10,10);
rect(240,270,10,10);
rect(260,250,10,50);
fill(242,134,47,fireTransp);
rect(260,170,10,80);
rect(280,200,10,100);
rect(300,230,10,30);
rect(290,250,10,10);
rect(270,230,10,70);
rect(250,250,10,30);
rect(240,220,10,40);
rect(230,240,10,40);
rect(220,240,10,50);
rect(230,230,10,10);
rect(230,250,10,40);
rect(200,210,10,20);
rect(200,240,10,40);
}
}
class YouDied{
float textFade=0;
void death(){
fill(200,10,10,textFade);
rect(80,10,10,20);
rect(90,30,10,20);
rect(100,10,10,20);
rect(120,20,10,20);
rect(130,10,20,10);
rect(130,40,20,10);
rect(150,20,10,20);
rect(170,10,10,30);
rect(180,40,20,10);
rect(200,10,10,30);
rect(230,10,10,40);
rect(240,10,20,10);
rect(240,40,20,10);
rect(260,20,10,20);
rect(280,10,10,40);
rect(300,10,10,40);
rect(310,10,10,20);
rect(320,10,10,10);
rect(310,40,20,10);
rect(340,10,10,40);
rect(350,10,20,10);
rect(350,40,20,10);
rect(370,20,10,20); //Shapes for text//
/////Fade in text upon lighting fire "You Died" in pixelated font/////
if(key == 'x' || key == 'X'){
textFade++;
}
}
}