Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/*//////////////////////////////////
//        Interactive Toy         //
//          Exterminator          //
//        Austin Waterson         //
//       Media Computation        // 
*///////////////////////////////////


//Initializing ant starting positions
//Forcing them to stay within the width
float antPosX = random(5, 395);
float antPosY = random(400, 450);

float antTwoPosX = random(5, 395);
float antTwoPosY = random(400, 450);

float antThreePosX = random(5, 395);
float antThreePosY = random(400, 450);

float antFourPosX = random(5, 395);
float antFourPosY = random(400, 450);

float antFivePosX = random(5, 395);
float antFivePosY = random(400, 450);

//the speed at which the ants will travel
int speed = 3;
void setup()
{
  size(400, 400);
}
void draw()
{
  drawBackground();
  //drawing ants individually based on previously set variables
  drawAnt(); 
  drawAntTwo(); 
  drawAntThree(); 
  drawAntFour(); 
  drawAntFive(); 
  //spray can
  Spray();
  drawSprayCan();
  
  //Detection and movement
  updateAnts();
  sprayDetect();
}
void drawBackground()
{
  background(255);
  fill(0, 0, 255);
  //Creates checkered pattern
  for (int i = 0; i<width*2; i+=50)
  {    
    for (int j = 0; j<=height*2; j+=50)
    {
      rect(i, j, 50, 50);
      j+=50;
    }
    i+=50;
  }
  for (int i = 50; i<width*2; i+=50)
  {    
    for (int j = 50; j<=height*2; j+=50)
    {
      rect(i, j, 50, 50);
      j+=50;
    }
    i+=50;
  }
}
void drawSprayCan()
{
  stroke(0);
  fill(255, 0, 0);
  rect(mouseX-8, mouseY-15, 16, 30);
  fill(150);
  rect(mouseX-2, mouseY-20, 3, 5);
  rect(mouseX-3, mouseY-25, 5, 5);
  rect(mouseX-10, mouseY+15, 20, 2);
  rect(mouseX-10, mouseY-15, 20, 2);
}
void drawAnt()
{
  fill(175, 0, 0);
  line(antPosX-5, antPosY-5, antPosX+5, antPosY-5);
  line(antPosX-5, antPosY, antPosX+5, antPosY);
  line(antPosX-5, antPosY+5, antPosX+5, antPosY+5);
  ellipse(antPosX, antPosY-5, 5, 5);
  ellipse(antPosX, antPosY, 5, 5);
  ellipse(antPosX, antPosY+5, 5, 5);
}
void drawAntTwo()
{
  fill(175, 0, 0);
  line(antTwoPosX-5, antTwoPosY-5, antTwoPosX+5, antTwoPosY-5);
  line(antTwoPosX-5, antTwoPosY, antTwoPosX+5, antTwoPosY);
  line(antTwoPosX-5, antTwoPosY+5, antTwoPosX+5, antTwoPosY+5);
  ellipse(antTwoPosX, antTwoPosY-5, 5, 5);
  ellipse(antTwoPosX, antTwoPosY, 5, 5);
  ellipse(antTwoPosX, antTwoPosY+5, 5, 5);
}
void drawAntThree()
{
  fill(175, 0, 0);
  line(antThreePosX-5, antThreePosY-5, antThreePosX+5, antThreePosY-5);
  line(antThreePosX-5, antThreePosY, antThreePosX+5, antThreePosY);
  line(antThreePosX-5, antThreePosY+5, antThreePosX+5, antThreePosY+5);
  ellipse(antThreePosX, antThreePosY-5, 5, 5);
  ellipse(antThreePosX, antThreePosY, 5, 5);
  ellipse(antThreePosX, antThreePosY+5, 5, 5);
}
void drawAntFour()
{
  fill(175, 0, 0);
  line(antFourPosX-5, antFourPosY-5, antFourPosX+5, antFourPosY-5);
  line(antFourPosX-5, antFourPosY, antFourPosX+5, antFourPosY);
  line(antFourPosX-5, antFourPosY+5, antFourPosX+5, antFourPosY+5);
  ellipse(antFourPosX, antFourPosY-5, 5, 5);
  ellipse(antFourPosX, antFourPosY, 5, 5);
  ellipse(antFourPosX, antFourPosY+5, 5, 5);
}
void drawAntFive()
{
  fill(175, 0, 0);
  line(antFivePosX-5, antFivePosY-5, antFivePosX+5, antFivePosY-5);
  line(antFivePosX-5, antFivePosY, antFivePosX+5, antFivePosY);
  line(antFivePosX-5, antFivePosY+5, antFivePosX+5, antFivePosY+5);
  ellipse(antFivePosX, antFivePosY-5, 5, 5);
  ellipse(antFivePosX, antFivePosY, 5, 5);
  ellipse(antFivePosX, antFivePosY+5, 5, 5);
}

void Spray()
{
  //if the mouse is clicked apply the patter for the spray
  if (mousePressed == true)
  {
    fill(30, 220, 35);
    noStroke();
    triangle(mouseX-1, mouseY-20, mouseX-30, mouseY-50, mouseX-30, mouseY-20);
    ellipse(mouseX-35, mouseY-50, 15, 15);
    ellipse(mouseX-45, mouseY-50, 15, 15);
    ellipse(mouseX-35, mouseY-35, 30, 30);
    ellipse(mouseX-50, mouseY-30, 15, 15);
    ellipse(mouseX-48, mouseY-40, 15, 15);
    ellipse(mouseX-35, mouseY-25, 15, 15);
  }
}
void updateAnts()
{
  antPosY-=speed;
  antTwoPosY-=speed;
  antThreePosY-=speed;
  antFourPosY-=speed;
  antFivePosY-=speed; 
  //once an ant hits the top of the screen its position is set randomly below screen
  if (antPosY<=0)
  {
    antPosY = random(400, 450);
    antPosX = random(5, 395);
  }
  if (antTwoPosY<=0)
  {
    antTwoPosY = random(400, 450);
    antTwoPosX = random(5, 395);
  }
  if (antThreePosY<=0)
  {
    antThreePosY = random(400, 450);
    antThreePosX = random(5, 395);
  }
  if (antFourPosY<=0)
  {
    antFourPosY = random(400, 450);
    antFourPosX = random(5, 395);
  }
  if (antFivePosY<=0)
  {
    antFivePosY = random(400, 450);
    antFivePosX = random(5, 395);
  }
}
void sprayDetect()
{
  //If an ant enters a small 20x30 box within the spray their position is reset randomly
  if (antPosX <= mouseX-30 && antPosX >=mouseX-50 && antPosY-20 <= mouseY && antPosY >= mouseY-50)
  {
    antPosX = random(5, 395);
    antPosY = random(400, 450);
  }

  if (antTwoPosX <= mouseX-30 && antTwoPosX >=mouseX-50 && antTwoPosY-20 <= mouseY && antTwoPosY >= mouseY-50)
  {
    antTwoPosX = random(5, 395);
    antTwoPosY = random(400, 450);
  }

  if (antThreePosX <= mouseX-30 && antThreePosX >=mouseX-50 && antThreePosY-20 <= mouseY && antThreePosY >= mouseY-50)
  {
    antThreePosX = random(5, 395);
    antThreePosY = random(400, 450);
  }

  if (antFourPosX <= mouseX-30 && antFourPosX >=mouseX-50 && antFourPosY-20 <= mouseY && antFourPosY >= mouseY-50)
  {
    antFourPosX = random(5, 395);
    antFourPosY = random(400, 450);
  }

  if (antFivePosX <= mouseX-30 && antFivePosX >=mouseX-50 && antFivePosY-20 <= mouseY && antFivePosY >= mouseY-50)
  {
    antFivePosX = random(5, 395);
    antFivePosY = random(400, 450);
  }
}