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

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
			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.