/*
* Patrick Gillen Climbers
*/
int many = 10;
Climber [] a = new Climber[many];

void setup(){
  background(255,0,255);
  size(800,600);
  restart();
}

void restart(){ // resets the climbers
  for (int i = 0; i < many; i++){
    a[i] = new Climber (100 + 50*i, height - 50, 20, 20);
  }
}

void draw(){ 
  for (int i = 0; i < many; i++){
    a[i].show();
  }
}

void keyPressed(){
  if (key == ' '){
    for (int i = 0; i < many; i++){
      
      a[i].move(random(20));
    }
  }
  if (key == 'r'){
    restart();
  }
 /* if (key == 'f') {
    for (int i = 0; i < many; i++){
      
      a[i].fall(random(20));
    }
  }
  */
  background(255,0,255);
}

void mousePressed(){
  for(int i = 0; i < many; i++){
    if(a[i].hit(mouseX,mouseY)){
      a[i].fall(random(20));
    }
  }
  background(255,0,255);
}


class Climber 
{  
  int x, y,w,h;
  int m, f;
  
  
  // CONSTRUCTORS
  Climber() // default constructor
  {
  }
  
  Climber (int xset, int yset, int wset, int hset) //constructor to set x,y coordinates, and height and width
  {
    x = xset;
    y = yset;
    w = wset;
    h = hset; 
  }

  void move(float m) // moves climbers up at random number up to 20
  {
    y -= m;
  }
  
  void show() // shows the climbers
  {
    
    ellipseMode(CENTER);
    ellipse(x,y, w, h);
  }
  
  boolean hit(float xx, float yy)
  {
    return abs(x-xx) <  10 && abs(y-yy) < 10;
  }

  void fall(float f)
  {
    y += f;
  }
}