Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
//variables necesary to do the movement betwen the seasons
int screenCounter;
boolean doMovement;


////variables used in the terrain generation
//random position for the first object
float randomPositionX1 =random(25, 775);
float randomPositionY1 =random(25, 575);

//random position for the second object
float randomPositionX2 =random(25, 775);
float randomPositionY2 =random(25, 575);

//random position for the third object
float randomPositionX3 =random(25, 775);
float randomPositionY3 =random(25, 575);



////winter
//class rock for the winter
Rock winterRock1;
Rock winterRock2;
Rock winterRock3;
Rock winterRock4;
Rock winterRock5;
Rock winterRock6;
//class snow tree for the winter
SnowTree snowTree1;
SnowTree snowTree2;
SnowTree snowTree3;
SnowTree snowTree4;
SnowTree snowTree5;
SnowTree snowTree6;
SnowTree snowTree7;
SnowTree snowTree8;
SnowTree snowTree9;
SnowTree snowTree10;

////spring
//class flower for the spring
Flower flower1;
Flower flower2;
Flower flower3;
Flower flower4;
Flower flower5;
//class rock for the spring
Rock springRock1;
Rock springRock2;
Rock springRock3;
Rock springRock4;
Rock springRock5;
Rock springRock6;
//class green tree for the spring
GreenTree greenTree1;
GreenTree greenTree2;
GreenTree greenTree3;
GreenTree greenTree4;
GreenTree greenTree5;
GreenTree greenTree6;
GreenTree greenTree7;
GreenTree greenTree8;
GreenTree greenTree9;
GreenTree greenTree10;

////summer
//class rock for the summer
Rock summerRock1;
Rock summerRock2;
Rock summerRock3;
Rock summerRock4;
Rock summerRock5;
Rock summerRock6;
//class green tree for summer
WindyTree windyTree1;
WindyTree windyTree2;
WindyTree windyTree3;
WindyTree windyTree4;
WindyTree windyTree5;
WindyTree windyTree6;
WindyTree windyTree7;
WindyTree windyTree8;
WindyTree windyTree9;
WindyTree windyTree10;
WindyTree windyTree11;
WindyTree windyTree12;
WindyTree windyTree13;
WindyTree windyTree14;
WindyTree windyTree15;
WindyTree windyTree16;
WindyTree windyTree17;
WindyTree windyTree18;
WindyTree windyTree19;
WindyTree windyTree20;

////autumn
//class rock for the autumn
Rock autumnRock1;
Rock autumnRock2;
Rock autumnRock3;
Rock autumnRock4;
Rock autumnRock5;
Rock autumnRock6;
//class orange tree for autumn 
OrangeTree orangeTree1;
OrangeTree orangeTree2;
OrangeTree orangeTree3;
OrangeTree orangeTree4;
OrangeTree orangeTree5;
OrangeTree orangeTree6;
OrangeTree orangeTree7;
OrangeTree orangeTree8;
OrangeTree orangeTree9;
OrangeTree orangeTree10;
OrangeTree orangeTree11;
OrangeTree orangeTree12;
OrangeTree orangeTree13;
OrangeTree orangeTree14;
OrangeTree orangeTree15;
OrangeTree orangeTree16;
OrangeTree orangeTree17;
OrangeTree orangeTree18;
OrangeTree orangeTree19;
OrangeTree orangeTree20;

////halloween
//class rock for halloween
Rock halloweenRock1;
Rock halloweenRock2;
Rock halloweenRock3;
//class pumkin for hallowen
Pumkin pumkin1;
Pumkin pumkin2;
Pumkin pumkin3;
Pumkin pumkin4;
Pumkin pumkin5;
//class purple tree for halloween
PurpleTree purpleTree1;
PurpleTree purpleTree2;
PurpleTree purpleTree3;
PurpleTree purpleTree4;
PurpleTree purpleTree5;
PurpleTree purpleTree6;
PurpleTree purpleTree7;
PurpleTree purpleTree8;
PurpleTree purpleTree9;
PurpleTree purpleTree10;
PurpleTree purpleTree11;
PurpleTree purpleTree12;
PurpleTree purpleTree13;
PurpleTree purpleTree14;
PurpleTree purpleTree15;


void setup()
{
  //screen size  
  size(800, 600);
  rectMode(CENTER);
  noStroke();
  frameRate(12);
  ////winter
  //winter rock initialization
  winterRock1=new Rock();
  winterRock2=new Rock();
  winterRock3=new Rock();
  winterRock4=new Rock();
  winterRock5=new Rock();
  winterRock6=new Rock();
  //snow tree initialization
  snowTree1=new SnowTree();
  snowTree2=new SnowTree();
  snowTree3=new SnowTree();
  snowTree4=new SnowTree();
  snowTree5=new SnowTree();
  snowTree6=new SnowTree();
  snowTree7=new SnowTree();
  snowTree8=new SnowTree();
  snowTree9=new SnowTree();
  snowTree10=new SnowTree();

  ////spring
  //flower initialization
  flower1=new Flower();
  flower2=new Flower();
  flower3=new Flower();
  flower4=new Flower();
  flower5=new Flower();
  //spring rock initialization
  springRock1=new Rock();
  springRock2=new Rock();
  springRock3=new Rock();
  springRock4=new Rock();
  springRock5=new Rock();
  springRock6=new Rock();
  //green tree initialization
  greenTree1= new GreenTree();
  greenTree2= new GreenTree();
  greenTree3= new GreenTree();
  greenTree4= new GreenTree();
  greenTree5= new GreenTree();
  greenTree6= new GreenTree();
  greenTree7= new GreenTree();
  greenTree8= new GreenTree();
  greenTree9= new GreenTree();
  greenTree10= new GreenTree();

  ////summer
  //summer rock initialization
  summerRock1=new Rock();
  summerRock2=new Rock();
  summerRock3=new Rock();
  summerRock4=new Rock();
  summerRock5=new Rock();
  summerRock6=new Rock();
  //windy tree initialization
  windyTree1= new WindyTree();
  windyTree2= new WindyTree();
  windyTree3= new WindyTree();
  windyTree4= new WindyTree();
  windyTree5= new WindyTree();
  windyTree6= new WindyTree();
  windyTree7= new WindyTree();
  windyTree8= new WindyTree();
  windyTree9= new WindyTree();
  windyTree10= new WindyTree();
  windyTree11= new WindyTree();
  windyTree12= new WindyTree();
  windyTree13= new WindyTree();
  windyTree14= new WindyTree();
  windyTree15= new WindyTree();
  windyTree16= new WindyTree();
  windyTree17= new WindyTree();
  windyTree18= new WindyTree();
  windyTree19= new WindyTree();
  windyTree20= new WindyTree();

  ////autumn
  //autumn rock initialization
  autumnRock1= new Rock();
  autumnRock2= new Rock();
  autumnRock3= new Rock();
  autumnRock4= new Rock();
  autumnRock5= new Rock();
  autumnRock6= new Rock();
  //orange tree initialization
  orangeTree1=new OrangeTree();
  orangeTree2=new OrangeTree();
  orangeTree3=new OrangeTree();
  orangeTree4=new OrangeTree();
  orangeTree5=new OrangeTree();
  orangeTree6=new OrangeTree();
  orangeTree7=new OrangeTree();
  orangeTree8=new OrangeTree();
  orangeTree9=new OrangeTree();
  orangeTree10=new OrangeTree();
  orangeTree11=new OrangeTree();
  orangeTree12=new OrangeTree();
  orangeTree13=new OrangeTree();
  orangeTree14=new OrangeTree();
  orangeTree15=new OrangeTree();
  orangeTree16=new OrangeTree();
  orangeTree17=new OrangeTree();
  orangeTree18=new OrangeTree();
  orangeTree19=new OrangeTree();
  orangeTree20=new OrangeTree();

  ////halloween
  //halloween rock initialization
  halloweenRock1=new Rock();
  halloweenRock2=new Rock();
  halloweenRock3=new Rock();
  //pumpkin initialization
  pumkin1=new Pumkin();
  pumkin2=new Pumkin();
  pumkin3=new Pumkin();
  pumkin4=new Pumkin();
  pumkin5=new Pumkin();
  //Purple tree initialization
  purpleTree1=new PurpleTree();
  purpleTree2=new PurpleTree();
  purpleTree3=new PurpleTree();
  purpleTree4=new PurpleTree();
  purpleTree5=new PurpleTree();
  purpleTree6=new PurpleTree();
  purpleTree7=new PurpleTree();
  purpleTree8=new PurpleTree();
  purpleTree9=new PurpleTree();
  purpleTree10=new PurpleTree();
  purpleTree11=new PurpleTree();
  purpleTree12=new PurpleTree();
  purpleTree13=new PurpleTree();
  purpleTree14=new PurpleTree();
  purpleTree15=new PurpleTree();



  screenCounter = 1;
}
void draw()
{
  startScreen();
  movement();
  startScreen();

  //the four seasons
  winter();
  spring();
  summer();
  autumn();

  //halloween
  halloween();

  endScreen();
}
//
//when the space bar is pressed the movement goes to true
void keyPressed()
{
  if (key == ' ');
  {
    doMovement = true;
  }
}
//when the space bar is not pressed the movement goes to false
void keyReleased()
{
  if (key == ' ');
  {
    doMovement= false;
  }
}
//when mouse is pressed set the movement to true
void mousePressed()
{
  doMovement = true;
}
//when mouse is not pressed set the movement to false
void mouseReleased()
{
  doMovement= false;
}
//if the movement is true set the counter to counter plus one
void movement()
{
  if (doMovement == true)
  {
    screenCounter= screenCounter + 1;
  }
}
//the begining screen that teaches the player and guives instructions
void startScreen()
{
  if (screenCounter == 1)
  {
    background(#666666);
    fill(0);


    //Text input in the start screen to guide the player on how to use the interactive toy
    textSize(14.7);
    fill(#f5e353);
    text("To navigate trough the four seasons (plus halloween) please press the spacebar or click on it with the mouse.", 10, 150);
    fill(#93cf20);
    text("Every time you open this program the positions and the arrangment of the terrain change randomly.", 10, 200);
  }
}
//winter season, including snow trees and rocks
void winter()
{
  if (screenCounter == 2)
  {
    //first layer of snow
    background(225);

    //first layer of grass
    fill(#41CA41);
    rect(randomPositionX1, randomPositionY1, 600, 600, 50);
    rect(randomPositionX2, randomPositionY2, 600, 600, 50);
    rect(randomPositionX3, randomPositionY3, 600, 600, 50);

    //second layer of snow
    fill(240);
    rect(randomPositionX1, randomPositionY1, 500, 500, 50);
    rect(randomPositionX2, randomPositionY2, 500, 500, 50);
    rect(randomPositionX3, randomPositionY3, 500, 500, 50);

    //second layer of grass
    fill(#52FF52);
    rect(randomPositionX1, randomPositionY1, 300, 300, 50);
    rect(randomPositionX2, randomPositionY2, 300, 300, 50);
    rect(randomPositionX3, randomPositionY3, 300, 300, 50);

    //third layer of snow
    fill(255);
    rect(randomPositionX1, randomPositionY1, 240, 240, 50);
    rect(randomPositionX2, randomPositionY2, 240, 240, 50);
    rect(randomPositionX3, randomPositionY3, 240, 240, 50);



    //Rock draw for the winter season
    winterRock1.drawRock();
    winterRock2.drawRock();
    winterRock3.drawRock();
    winterRock4.drawRock();
    winterRock5.drawRock();
    winterRock6.drawRock();

    //Tree draw for the winter season
    snowTree1.drawSnowTree();
    snowTree2.drawSnowTree();
    snowTree3.drawSnowTree();
    snowTree4.drawSnowTree();
    snowTree5.drawSnowTree();
    snowTree6.drawSnowTree();
    snowTree7.drawSnowTree();
    snowTree8.drawSnowTree();
    snowTree9.drawSnowTree();
    snowTree10.drawSnowTree();
  }
}
//spring season incluyding flowers, rock and windy trees
void spring()
{
  if (screenCounter == 3)
  {
    //first layer of ground
    background(#00D037);

    //second layer of ground
    fill(#00E63D);
    rect(randomPositionX1, randomPositionY1, 500, 500, 50);   
    rect(randomPositionX2, randomPositionY2, 500, 500, 50);
    rect(randomPositionX3, randomPositionY3, 500, 500, 50);

    //third layer of ground
    fill(#00FF44);
    rect(randomPositionX1, randomPositionY1, 250, 250, 50);
    rect(randomPositionX2, randomPositionY2, 250, 250, 50);
    rect(randomPositionX3, randomPositionY3, 250, 250, 50);

    //flowers draw for the spring season 
    flower1.drawFlower();
    flower2.drawFlower();
    flower3.drawFlower();
    flower4.drawFlower();
    flower5.drawFlower();

    //rocks draw for the spring season
    springRock1.drawRock();
    springRock2.drawRock();
    springRock3.drawRock();
    springRock4.drawRock();
    springRock5.drawRock();
    springRock6.drawRock();

    //green tree draw for the spring season
    greenTree1.drawGreenTree();
    greenTree2.drawGreenTree();
    greenTree3.drawGreenTree();
    greenTree4.drawGreenTree();
    greenTree5.drawGreenTree();
    greenTree6.drawGreenTree();
    greenTree7.drawGreenTree();
    greenTree8.drawGreenTree();
    greenTree9.drawGreenTree();
    greenTree10.drawGreenTree();
  }
}

void summer()
{
  if (screenCounter == 4)
  {
    //first layer of grass
    background(#4AC900);

    //first layer of ground
    fill(#BA7600);
    rect(randomPositionX1, randomPositionY1, 550, 550, 50);   
    rect(randomPositionX2, randomPositionY2, 550, 550, 50);
    rect(randomPositionX3, randomPositionY3, 550, 550, 50);

    //second layer of grass
    fill(#52E100);
    rect(randomPositionX1, randomPositionY1, 500, 500, 50);   
    rect(randomPositionX2, randomPositionY2, 500, 500, 50);
    rect(randomPositionX3, randomPositionY3, 500, 500, 50);

    //second layer of ground
    fill(#E19005);
    rect(randomPositionX1, randomPositionY1, 300, 300, 50);
    rect(randomPositionX2, randomPositionY2, 300, 300, 50);
    rect(randomPositionX3, randomPositionY3, 300, 300, 50);

    //third layer of grass
    fill(#5BF900);
    rect(randomPositionX1, randomPositionY1, 250, 250, 50);
    rect(randomPositionX2, randomPositionY2, 250, 250, 50);
    rect(randomPositionX3, randomPositionY3, 250, 250, 50);

    //summer rock draw for the summer season 
    summerRock1.drawRock();
    summerRock2.drawRock();
    summerRock3.drawRock();
    summerRock4.drawRock();
    summerRock5.drawRock();
    summerRock6.drawRock();

    //windy tree draw for the summer season
    windyTree1.drawWindyTree();
    windyTree2.drawWindyTree();
    windyTree3.drawWindyTree();
    windyTree4.drawWindyTree();
    windyTree5.drawWindyTree();
    windyTree6.drawWindyTree();
    windyTree7.drawWindyTree();
    windyTree8.drawWindyTree();
    windyTree9.drawWindyTree();
    windyTree10.drawWindyTree();
    windyTree11.drawWindyTree();
    windyTree12.drawWindyTree();
    windyTree13.drawWindyTree();
    windyTree14.drawWindyTree();
    windyTree15.drawWindyTree();
    windyTree16.drawWindyTree();
    windyTree17.drawWindyTree();
    windyTree18.drawWindyTree();
    windyTree19.drawWindyTree();
    windyTree20.drawWindyTree();
  }
}

void autumn()
{
  if (screenCounter == 5)
  {
    //first layer of ground
    background(#DEAA00);

    //second layer of ground
    fill(#C37D05);
    rect(randomPositionX1, randomPositionY1, 600, 600, 50);   
    rect(randomPositionX2, randomPositionY2, 600, 600, 50);
    rect(randomPositionX3, randomPositionY3, 600, 600, 50);

    //third layer of ground
    fill(#EEB600);
    rect(randomPositionX1, randomPositionY1, 500, 500, 50);   
    rect(randomPositionX2, randomPositionY2, 500, 500, 50);
    rect(randomPositionX3, randomPositionY3, 500, 500, 50);

    //fourth layer of ground
    fill(#E29003);
    rect(randomPositionX1, randomPositionY1, 300, 300, 50);
    rect(randomPositionX2, randomPositionY2, 300, 300, 50);
    rect(randomPositionX3, randomPositionY3, 300, 300, 50);

    //fift layer of ground
    fill(#FFC400);
    rect(randomPositionX1, randomPositionY1, 250, 250, 50);
    rect(randomPositionX2, randomPositionY2, 250, 250, 50);
    rect(randomPositionX3, randomPositionY3, 250, 250, 50);

    //autumn rock draw for the autumn season
    autumnRock1.drawRock();
    autumnRock2.drawRock();
    autumnRock3.drawRock();
    autumnRock4.drawRock();
    autumnRock5.drawRock();
    autumnRock6.drawRock();
    //orange trees draw for the autumn season
    orangeTree1.drawOrangeTree();
    orangeTree2.drawOrangeTree();
    orangeTree3.drawOrangeTree();
    orangeTree4.drawOrangeTree();
    orangeTree5.drawOrangeTree();
    orangeTree6.drawOrangeTree();
    orangeTree7.drawOrangeTree();
    orangeTree8.drawOrangeTree();
    orangeTree9.drawOrangeTree();
    orangeTree10.drawOrangeTree();
    orangeTree11.drawOrangeTree();
    orangeTree12.drawOrangeTree();
    orangeTree13.drawOrangeTree();
    orangeTree14.drawOrangeTree();
    orangeTree15.drawOrangeTree();
    orangeTree16.drawOrangeTree();
    orangeTree17.drawOrangeTree();
    orangeTree18.drawOrangeTree();
    orangeTree19.drawOrangeTree();
    orangeTree20.drawOrangeTree();
  }
}

void halloween()
{
  if (screenCounter == 6)
  {
    //first layer of ground
    background(#B66FCB);

    //second layer of ground
    fill(#84359C);
    rect(randomPositionX1, randomPositionY1, 600, 600, 50);   
    rect(randomPositionX2, randomPositionY2, 600, 600, 50);
    rect(randomPositionX3, randomPositionY3, 600, 600, 50);

    //third layer of ground
    fill(#CF7EE8);
    rect(randomPositionX1, randomPositionY1, 500, 500, 50);   
    rect(randomPositionX2, randomPositionY2, 500, 500, 50);
    rect(randomPositionX3, randomPositionY3, 500, 500, 50);

    //fourth layer of ground
    fill(#AD58C7);
    rect(randomPositionX1, randomPositionY1, 300, 300, 50);
    rect(randomPositionX2, randomPositionY2, 300, 300, 50);
    rect(randomPositionX3, randomPositionY3, 300, 300, 50);

    //fift layer of ground
    fill(#E58DFF);
    rect(randomPositionX1, randomPositionY1, 250, 250, 50);
    rect(randomPositionX2, randomPositionY2, 250, 250, 50);
    rect(randomPositionX3, randomPositionY3, 250, 250, 50);

    //halloween rocks draw for halloween
    halloweenRock1.drawRock();
    halloweenRock2.drawRock();
    halloweenRock3.drawRock();
    //pumpkings draw for halloween
    pumkin1.drawPumkin();
    pumkin2.drawPumkin();
    pumkin3.drawPumkin();
    pumkin4.drawPumkin();
    pumkin5.drawPumkin();
    //purple trees draw for halloween
    purpleTree1.drawPurpleTree();
    purpleTree2.drawPurpleTree();
    purpleTree3.drawPurpleTree();
    purpleTree4.drawPurpleTree();
    purpleTree5.drawPurpleTree();
    purpleTree6.drawPurpleTree();
    purpleTree7.drawPurpleTree();
    purpleTree8.drawPurpleTree();
    purpleTree9.drawPurpleTree();
    purpleTree10.drawPurpleTree();
    purpleTree11.drawPurpleTree();
    purpleTree12.drawPurpleTree();
    purpleTree13.drawPurpleTree();
    purpleTree14.drawPurpleTree();
    purpleTree15.drawPurpleTree();
  }
}

void endScreen()
{
  if (screenCounter == 7)
  {
    screenCounter = 1;
  }
}
class Flower
{
  //variable that change the red,green and blue hues to generate a new color for the flowers
  float treeColorR = random(178, 255); 
  float treeColorG = random(100, 255); 
  float treeColorB = 120; 
  //variable for the flower size
  float flowerSize = random(5, 15);

  //use of PVector class for the diferent positions of the flowers
  PVector position1;
  PVector position2;
  PVector position3;
  PVector position4;
  PVector position5;
  PVector position6;

  Flower()
  {
    //initialization code
    rectMode(CENTER);
    noStroke();
    //position for the flower1
    position1=new PVector(random(25, 775), random(25, 575));
    //position for the flower 2
    position2=new PVector(random(25, 775), random(25, 575));
    //position for the flower 3
    position3=new PVector(random(25, 775), random(25, 575));
    //position for the flower 4
    position4=new PVector(random(25, 775), random(25, 575));
    //position for the flower 5
    position5=new PVector(random(25, 775), random(25, 575));
    //position for the flower 6
    position6=new PVector(random(25, 775), random(25, 575));
  }

  void drawFlower()
  {

    ////flower1
    fill(treeColorR, treeColorG, treeColorB);
    rect(position1.x, position1.y, flowerSize, flowerSize, 15);

    ////flower2
    fill(treeColorR, treeColorG, treeColorB);
    rect(position2.x, position3.y, flowerSize, flowerSize, 15);

    ////flower3
    fill(treeColorR, treeColorG, treeColorB);
    rect(position3.x, position3.y, flowerSize, flowerSize, 15);

    ////flower4
    fill(treeColorR, treeColorG, treeColorB);
    rect(position4.x, position4.y, flowerSize, flowerSize, 15);

    ////flower5
    fill(treeColorR, treeColorG, treeColorB);
    rect(position5.x, position5.y, flowerSize, flowerSize, 15);

    ////flower6
    fill(treeColorR, treeColorG, treeColorB);
    rect(position6.x, position6.y, flowerSize, flowerSize, 15);
  }
}
class GreenTree
{
  float treeColorR = random(0, 100); 
  float treeColorB = random(0, 100); 

  //array for the diferent greens
  float[] greens = new float[4];
  //array for the diferent tree sizes
  float[] treeSizes = new float[4];
  //PVector for the random position of the green tree
  PVector position;


  GreenTree()
  {
    //initialization code
    rectMode(CENTER);
    noStroke();
    //declaration of the array for the green color
    greens[0] = random(130, 160);
    greens[1] = random(160, 190);
    greens[2] = random(190, 220);
    greens[3] = random(220, 255);
    //declaration of the array for the tree sizes
    treeSizes[0] = random (40, 65);
    treeSizes[1] = random (30, 40);
    treeSizes[2] = random (20, 30);
    treeSizes[3] = random (5, 20);

    position=new PVector(random(25, 775), random(25, 575));
  }

  void drawGreenTree()
  {

    ////layer 1
    fill(treeColorR, greens[0], treeColorB);
    rect(position.x, position.y, treeSizes[0], treeSizes[0], 15);

    ////layer 2
    fill(treeColorR, greens[1], treeColorB);
    rect(position.x, position.y, treeSizes[1], treeSizes[1], 15);

    ////layer 3
    fill(treeColorR, greens[2], treeColorB);
    rect(position.x, position.y, treeSizes[2], treeSizes[2], 15);

    ////layer 4
    fill(treeColorR, greens[3], treeColorB);
    rect(position.x, position.y, treeSizes[3], treeSizes[3], 15);
  }
}
class OrangeTree
{
  //variables that makes the red and blue hue change giving it a new color
  float treeColorR = random(220, 255); 
  float treeColorB = random(0, 100); 

  //array for the diferent greens
  float[] greens = new float[4];
  //array for the diferent tree sizes
  float[] treeSizes = new float[4];

  PVector position;


  OrangeTree()
  {
    //initialization code
    rectMode(CENTER);
    noStroke();
    //declaration of the array for the green color
    greens[0] = random(130, 160);
    greens[1] = random(160, 190);
    greens[2] = random(190, 220);
    greens[3] = random(220, 255);
    //declaration of the array for the tree sizes
    treeSizes[0] = random (40, 65);
    treeSizes[1] = random (30, 40);
    treeSizes[2] = random (20, 30);
    treeSizes[3] = random (5, 20);

    position=new PVector(random(25, 775), random(25, 575));
  }

  void drawOrangeTree()
  {

    ////layer 1
    fill(treeColorR, greens[0], treeColorB);
    rect(position.x, position.y, treeSizes[0], treeSizes[0], 15);

    ////layer 2
    fill(treeColorR, greens[1], treeColorB);
    rect(position.x, position.y, treeSizes[1], treeSizes[1], 15);

    ////layer 3
    fill(treeColorR, greens[2], treeColorB);
    rect(position.x, position.y, treeSizes[2], treeSizes[2], 15);

    ////layer 4
    fill(treeColorR, greens[3], treeColorB);
    rect(position.x, position.y, treeSizes[3], treeSizes[3], 15);
  }
}
class Pumkin
{
  float layer1Size = random(60, 70);
  float layer2Size = random(40, 50);

  PVector position;

  Pumkin()
  {
    //initialization code
    rectMode(CENTER);
    noStroke();
    position=new PVector(random(25, 775), random(25, 575));
  }

  void drawPumkin()
  {

    ////layer 1
    fill(255, 255, 0, 30);
    rect(position.x, position.y, random(60, 70), random(60, 70), 15);

    ////layer 2
    fill(255, 255, 0, 30);
    rect(position.x, position.y, random(40, 45), random(40, 45), 15);

    ////layer 3
    fill(200, 90, 0);
    rect(position.x, position.y, 20, 20, 5);

    ////layer 3
    fill(255, 150, 0);
    rect(position.x, position.y, 16, 16, 10);
  }
}
class PurpleTree
{
  //variables that makes the green hue change giving it a new color
  float treeColorG = random(0, 100); 


  //arrays that makes the red and blue hue change giving it a new color
  float[] reds = new float[4];
  float[] blues = new float[4];
  //array for the diferent tree sizes
  float[] treeSizes = new float[4];
  //PVector for the random x and y position
  PVector position;


  PurpleTree()
  {
    //initialization code
    rectMode(CENTER);
    noStroke();
    //declaration of the array for the reds
    reds[0] = random(130, 160);
    reds[1] = random(160, 190);
    reds[2] = random(190, 220);
    reds[3] = random(220, 255);
    //declaration of the array for the blues
    blues[0] = random(130, 160);
    blues[1] = random(160, 190);
    blues[2] = random(190, 220);
    blues[3] = random(220, 255);
    //declaration of the array for the tree sizes
    treeSizes[0] = random (40, 65);
    treeSizes[1] = random (30, 40);
    treeSizes[2] = random (20, 30);
    treeSizes[3] = random (5, 20);

    position=new PVector(random(25, 775), random(25, 575));
  }

  void drawPurpleTree()
  {

    ////layer 1
    fill(reds[0], treeColorG, blues[0]);
    rect(position.x, position.y, treeSizes[0], treeSizes[0], 15);

    ////layer 2
    fill(reds[1], treeColorG, blues[1]);
    rect(position.x, position.y, treeSizes[1], treeSizes[1], 15);

    ////layer 3
    fill(reds[2], treeColorG, blues[2]);
    rect(position.x, position.y, treeSizes[2], treeSizes[2], 15);

    ////layer 4
    fill(reds[3], treeColorG, blues[3]);
    rect(position.x, position.y, treeSizes[3], treeSizes[3], 15);
  }
}
class Rock
{
  float rockColor1 = random(120, 150);
  float rockColor2 = random(150, 200);
  float rockColor3 = random(200, 230);

  float randomPosition1 = random(-20, 20);
  float randomPosition2 = random(-20, 20);

  //array for the rock sizes
  float[] treeSizesX = new float[3];
  float[] treeSizesY = new float[3];

  PVector position;


  Rock()
  {
    //initialization code
    rectMode(CENTER);
    noStroke();

    //declaration of the array for the X size
    treeSizesX[0] = random (40, 65);
    treeSizesX[1] = random (30, 40);
    treeSizesX[2] = random (20, 30);

    //declaration of the array for the Y size
    treeSizesY[0] = random (60, 75);
    treeSizesY[1] = random (40, 60);
    treeSizesY[2] = random (30, 40);


    position=new PVector(random(25, 775), random(25, 575));
  }

  void drawRock()
  {


    ////layer 1
    fill(rockColor1, rockColor1, rockColor1);
    rect(position.x, position.y, treeSizesX[0], treeSizesY[0], 3);

    ////layer 2
    fill(rockColor2, rockColor2, rockColor2);
    rect(position.x+randomPosition1, position.y, treeSizesX[1], treeSizesY[1], 3);

    ////layer 3
    fill(rockColor3, rockColor3, rockColor3);
    rect(position.x+randomPosition2, position.y, treeSizesX[2], treeSizesY[2], 3);
  }
}
class SnowTree
{
  //variables that makes the red and blue hue change giving it a new color
  float treeColorR = random(0, 100); 
  float treeColorB = random(0, 100); 

  //array for the diferent green color
  float[] greens = new float[4];
//array for the diferent tree sizes
  float[] treeSizes = new float[4];

  PVector position;


  SnowTree()
  {
    //initialization code
    rectMode(CENTER);
    noStroke();

    //declaration of the array for the green color
    greens[0] = random(130, 160);
    greens[1] = random(160, 190);
    greens[2] = random(190, 220);
    greens[3] = random(220, 255);
    //declaration of the array for the tree sizes
    treeSizes[0] = random (40, 65);
    treeSizes[1] = random (30, 40);
    treeSizes[2] = random (20, 30);
    treeSizes[3] = random (5, 20);

    position=new PVector(random(25, 775), random(25, 575));
  }

  void drawSnowTree()
  {

    ////layer 1
    fill(treeColorR, greens[0], treeColorB);
    rect(position.x, position.y, treeSizes[0], treeSizes[0], 15);

    ////layer 1.5
    fill(#E9FFEA);
    rect(position.x, position.y, treeSizes[0]-8, treeSizes[0]-8, 15);

    ////layer 2
    fill(treeColorR, greens[1], treeColorB);
    rect(position.x, position.y, treeSizes[1], treeSizes[1], 15);

    ////layer 2.5
    fill(#E9FFEA);
    rect(position.x, position.y, treeSizes[1]-8, treeSizes[1]-8, 15);

    ////layer 3
    fill(treeColorR, greens[2], treeColorB);
    rect(position.x, position.y, treeSizes[2], treeSizes[2], 15);

    ////layer 3.5
    fill(#E9FFEA);
    rect(position.x, position.y, treeSizes[2]-8, treeSizes[2]-8, 15);


    ////layer 4
    fill(treeColorR, greens[3], treeColorB);
    rect(position.x, position.y, treeSizes[3], treeSizes[3], 15);
  }
}
class WindyTree
{
  //variables that makes the red and blue hue change giving it a new color
  float treeColorR = random(0, 100); 
  float treeColorB = random(0, 100); 

  //array for the diferent green color
  float[] greens = new float[4];




  float randomRotation;

  PVector position;


  WindyTree()
  {
    //initialization code
    rectMode(CENTER);
    noStroke();

    //declaration of the array for the green color
    greens[0] = random(130, 160);
    greens[1] = random(160, 190);
    greens[2] = random(190, 220);
    greens[3] = random(220, 255);

    position=new PVector(random(0, 800), random(0, 600));
  }

  void drawWindyTree()
  {

    ////layer 1
    fill(treeColorR, greens[0], treeColorB);
    //The size varies from frame to frame to guive the efect of wind
    rect(position.x, position.y, random (50, 55), random (50, 55), 50);

    ////layer 2
    fill(treeColorR, greens[1], treeColorB);
    //The size varies from frame to frame to guive the efect of wind
    rect(position.x, position.y, random (30, 35), random (30, 35), 50);

    ////layer 3
    fill(treeColorR, greens[2], treeColorB);
    //The size varies from frame to frame to guive the efect of wind
    rect(position.x, position.y, random (25, 30), random (25, 30), 50);

    ////layer 4
    fill(#95F671);
    //The size varies from frame to frame to guive the efect of wind
    rect(position.x, position.y, random (15, 20), random (15, 20), 50);
  }
}