import java.util.ArrayList; public class BugSystem { ArrayList bugs; ArrayList food;//an array of segments BugSystem() {initialize();} void initialize() { Organism hold; Segment holdS; Vector3D pos= new Vector3D(); Vector3D color=new Vector3D(); bugs = new ArrayList(); food = new ArrayList(); for(int i=0; i<5; i++) { //ADD BUG pos.setXYZ(random(3),random(3),random(3)); hold = new Organism(); hold.initialize(pos, .1f, .007f+random(.004f)); bugs.add(hold); } for(int i=0; i<15; i++) { //ADD FOOD pos.setXYZ(random(3),random(3),random(3)); color.setXYZ(.1f+random(.9f),.1f+random(.9f),.1f+random(.9f)); //Segment(Vector3D location_, float d_, Vector3D color_) holdS = new Segment(pos, .1f, color); food.add(holdS); } }//END initialize void render() { Organism hold; Segment holdS; for(int i=0; i< bugs.size(); i=i+1) { hold=(Organism) bugs.get(i); hold.render(); } for(int i=0; i< food.size(); i=i+1) { //render segments holdS=(Segment) food.get(i); holdS.render(); } }//END render void simulate() { Vector3D pos = new Vector3D(); Organism hold; Segment holdS; int target; for(int i=0; i< bugs.size(); i=i+1) { hold=(Organism) bugs.get(i); //find the closest one target=findclosest(i); holdS=(Segment)food.get(target); //check to see if next to it if(hold.distancefrom(holdS.XYZ())<=.1f+.0001f ) { //Add to the Organism hold.addseg(holdS.color()); //move the food pos.setXYZ(random(3),random(3),random(3)); holdS.setXYZ(pos); } //or seek it else { hold.seek(holdS.XYZ()); } } }//END simulate //findcloset int findclosest(int index) { Organism hold; Segment holdS; float dist = 10000; //make this huge int target=0; //set to some default hold = (Organism) bugs.get(index); for(int i=0; i