The Genotype Class Genotype Genotypes are the representations of the information used to generate the images. A Genotype contains an Expression which dictates the contents of the image, and Genotype also contains a method to produce a java.awt.image.BufferedImage at arbitrary resolutions for display. There are three ways to obtain a Genotype. One can call the Genotype constructor with an Expression as argument, one can obtain one from a RandomGenerator object, or one can breed two or more Genotypes together with a Breeder object. Genotypes are immutable.
All expressions are immutable.
A new Expression may be created by the appropriate static factory method in class Expression, which takes in a string and the appropriate number of Expression arguments. Expressions can accept visitors of the type ExpressionVisitor. Three common visitors are the PrettyPrintVisitor which prints out an S-expression representation of the Expression to an output stream, EvaluatorExpression, which evaluates the Expression at given coordinates, and SimpleMutatorVisitor, which randomly changes certain parts of an Expression into new parts. Abstract Class Breeder, Class SimpleBreeder A Breeder takes in two Genotypes and breeds them into a new Genotype, or a java.util.List of Genotypes and a number, and breeds them into that many new children. Then it may be given two Genotypes and will produce a new Genotype with some of the functions of the first spliced with some of the functions of the second.