Ant Hill

<< Plinko | OtherProjectsTrailIndex | DroppingLetters >>

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

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);


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

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

		} else {//must have been the spawnTimer generating the event
			ants.add(new Ant(300,200));



What else?

  1. set a limit to the number of Ants
  2. make an method that determines if a ant is off the screen and be removed from ants
  3. Make @@AntHill@ class that has its own list of ants, and then draw more than one AntHill in this applet.
  4. Make a star field by not changing the direction of the Ant.