import java.util.Vector; import Renderable; import java.awt.*; public abstract class Individual extends Renderable { private Individual[] parents={null,null}; private Vector offspring; public Individual() { offspring = new Vector(10,10); } public Individual(Individual i) { this(); //somehow make this equal to i } public final void addOffspring(Individual i) { if (offspring.lastIndexOf(i)==-1) offspring.addElement(i); } public final void setParents(Individual parent0, Individual parent1) { parents = new Individual[2]; parent0.addOffspring(this); parent1.addOffspring(this); parents[0]=parent0; parents[1]=parent1; } public final Individual[] getParents() { return parents; } public final boolean isOffspringOf(Individual i) { return (i.offspring.lastIndexOf(this)!=-1)&&(i==parents[0]||i==parents[1]); } public final boolean isParentOf(Individual i) { return (offspring.lastIndexOf(i)!=-1)&&(i.parents[0]==this||i.parents[1]==this); } public final static Individual[] getOffspringOf(Individual dad, Individual mom) { return dad.getOffspringWith(mom); } public final static Individual getMutationOf(Individual i) { return i.getMutation(); } public final static int getFitnessOf(Individual i) { return i.getFitness(); } public final static int getMaxFitness(Individual i) { return i.getFitness(); } public abstract Individual getRandomIndividual(); public abstract int getFitness(); public abstract int getMaxFitness(); public abstract Individual[] getOffspringWith(Individual mommy); public abstract Individual getMutation(); public Dimension getDimensions() { return new Dimension(1000,1000); } public void render(Graphics g) { System.out.println("Reached Individual.render(Graphics g)"); Dimension d=getDimensions(); g.setColor(Color.white); g.fillRect(0,0,d.width,d.height); g.setColor(Color.blue); g.drawString(toString(),10,10); } }