function:RenderSidePart pageleftbodycaption pageleftbody sidenote Main.AntHill-SideNote Main.SideNote Site.SideNote

# Ant Hill

This applet uses an ArrayList of Ant. The Ant class needs a constructor with two int parameters. These parameters are the x and y locations of the origin of the ant. The Ant also needs a rise and run for its direction and speed. It needs at least a method draw, but you may wish to add some sort of counter or distance algorithm to see if a ant is too old or too far away to draw. Everytime it draws itself, it should move the x@ location by run and the y location by rise@@, and then change the rise and run to is randomly changes direction.

   /**
* @return a random int from a to b
*/
public int randomInt(int a, int b)
{
return Math.min(a, b)+(int)(Math.abs(b-a)*Math.random());
}



Make a loop in the paint method to draw all the ants

# AntHillApplet.java

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.util.ArrayList;
import javax.swing.Timer;

public class AntHillApplet extends Applet implements ActionListener
{
private ArrayList<Ant> ants;
private Timer animateTimer, spawnTimer;

public void init(){
ants =  new ArrayList<Ant>();
animateTimer = new Timer(30, this);
spawnTimer = new Timer(45,this);

animateTimer.start();
spawnTimer.start();

}
public void paint(Graphics g){
g.setColor(Color.WHITE);
g.fillRect(0, 0, 600, 400);
int i=0;
//draw every ant in the ants ArrayList
for(Ant a: ants){
a.draw();
a.move();
}
g.setColor(Color.BLACK);
g.drawString(ants.size()+" ants.", 20 , 20);
}
public void update(Graphics g)
{
paint(g); //get rid of flicker with this method
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==animateTimer){

repaint();
} else {//must have been the spawnTimer generating the event

2. make an method that determines if a ant is off the screen and be removed from ants