ArrayList<Car> traffic = new ArrayList<Car>();
float frogX = 400;
float frogY = 425;
float flyX = random(0,800);
float flyY = random(0,500);
int timer = 1000;
void setup()
{
  size(800,500);
  noCursor();
  int k=0;
  while(k<5)
  {
    traffic.add( new Car( random(0,400) )  );
    k += 1;
    k++;
  }
  
}
void draw()
{
  background(255);
  
  drawFrog();
  drawAndMoveCars();
  
  fill(0);
  ellipse(flyX,flyY,20,20);
  if( dist(flyX,flyY, frogX,frogY) <= 35 )
  {
    flyX = random(0,800);
    flyY = random(0,500);
    timer += 200;
  }
  
  if ( checkForDeath() )
  {
    die();
  }
  
  timer--;
  if( timer % 50 == 0)
  {
    traffic.add(  new Car( random(0,500) )    );
  }
  textSize(40);
  text(timer , 500,100);
  frogX = mouseX;
  frogY = mouseY;
}
boolean checkForDeath()
{
  for(Car c : traffic)
  {
    if( c.isTouching(frogX,frogY)  )
    {
      return true;
    }
  }
  return false;
}
void die()
{
  timer = 1000;
  traffic.clear();
}
void drawFrog()
{
  fill(#00ff00);
  ellipse( frogX, frogY, 50,50);
}
void drawAndMoveCars()
{
  for(Car c : traffic)
  {
    c.drawYourself();
    c.move();
  }
}
void keyPressed()
{
  if( key == 'w' )
  {
    frogY = frogY - 100;
  }
  if( key == 's' )
  {
    frogY = frogY + 100;
  }
  if( key == 'a' )
  {
    frogX = frogX - 100;
  }
  if( key == 'd' )
  {
    frogX = frogX + 100;
  }
}
void mousePressed()
{
  for(Car c : traffic)
  {
    if( c.mouseIsOnYou() )
    {
      c.turnKey();
    }
  }
}