Make it rain!

Here is a little applet I wrote in Processing for my ICM homework last week. When you move the cloud over the sun, all of the clouds will start to rain on the grass below.

http://itp.nyu.edu/~ka1019/ICM/raincloud/

It’s a little buggy–I think I need to fix the rules for where the mouse should be when it rains. I also know that this will be at least ten times better when I learn classes. I had a tough time understanding them in college, especially since we only spent about one month on Java in my Intro to Java and C class (roughly nine years ago), and the refresher course I took this fall was only on C.

[code lang="java"]
int x;  //moving cloud position
int y;  

int x1 = 180;  //stationary cloud 1 position
int y1 = 60;
int x2 = 550;  //stationary cloud 2 position
int y2 = 120;

float rx = random(700);  //raindrop position
float ry = random(261,700);

void setup()
{
  size(700, 700);
}

void draw()
{
  //sky
  background(153, 218, 252);
  
  smooth();
  
  //sun
  fill(255,255, 0);
  ellipse(390, 97, 100, 100);
  
  //grass
  fill(85, 252, 3);
  rect(0, 450, 700, 250);
  for(int g=450; g<=700; g+=20)
  {
      stroke(29, 137, 0);
      line(0, g, 700, g); 
  }
  
  noStroke();
  x = mouseX;
  y = mouseY;
    
  //stationary cloud #1
  fill(255);
  ellipse(x1, y1, 110, 110);
  ellipse(x1-60, y1+40, 110, 110);
  ellipse(x1+60, y1+40, 110, 110);
  ellipse(x1+60, y1+80, 250, 100);
  ellipse(x1-60, y1+80, 250, 100);
  ellipse(x1, y1+80, 250, 100);
  
  //stationary cloud #2
  fill(255);
  ellipse(x2, y2, 110, 110);
  ellipse(x2-60, y2+40, 110, 110);
  ellipse(x2+60, y2+40, 110, 110);
  ellipse(x2+60, y2+80, 250, 100);
  ellipse(x2-60, y2+80, 250, 100);
  ellipse(x2, y2+80, 250, 100);
  
  //moving cloud
  fill(255);
  ellipse(x, y, 110, 110);
  ellipse(x-60, y+40, 110, 110);
  ellipse(x+60, y+40, 110, 110);
  ellipse(x+60, y+80, 250, 100);
  ellipse(x-60, y+80, 250, 100);
  ellipse(x, y+80, 250, 100);
  
  //rain falls when the moving cloud covers the sun
  if (mouseX >= 310 && mouseX <= 387 && mouseY >= 13 && mouseY <= 96)
  {
    for(int i=0; i<=200; i++)
    {
      //rain
      fill(0, 0, 255);
      rect(random(700), random(210,700), 2, 15);
    }
  } 

}[/code]