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