This class was given the public functions Move(), Hunt(), Eat(), and Think()- all of type string- and a static constant of type char called ANIM_CHAR. This was represented by an “O”, and it acted as each anim’s avatar in the virtual environment. This class was also given the private functions Move_GA(), Hunt_GA(), and Think_GA(), as well as move_results(), hunt_results(), and decision(), all of type string. Private variables called energy and fitness, of type int, were also assigned to the Anim class. A constructor was declared that gave each new organism (3 total) 400 energy and 0 fitness.
	The basic template for the genetic algorithm was written in a header file, and was inserted into the main program. The template defined a string of binary digits as instructions, and instructions were given on assembling these strings into chromosomes of structure chromosome. The crossover rate was set at 0.07, and the mutation rate was set at 0.025. The fitness function was written to accept generic integers that would produce an integer result that could be converted to a fitness score. The function took results from previous runs of the function, compared the solution to the new solution, and determined if the fitness was higher. If so, it kept the new solution. After each solution was given a fitness score, they were bred using roulette selection, where a higher fitness score corresponded to a greater chance of being selected to mate by the program. The new population was returned as the new solution set.
	After customizing the variables and fitness function of the GA to fit each template (moving, hunting, thinking), it was rewritten as an inline function that could be called at any point. 
	The Move() function took a string of binary instructions and translated them into one of four possible directional motions. The avatar was adjusted accordingly on the screen. Moving one space cost one unit of energy. The Hunt() function utilized a basic sensor program to determine whether a food item or other organism was in an adjacent space, or further away. If so, the function moved the organism towards its prey until it was close enough to attack and kill. Attacking cost a proportionate amount of energy to the difficulty of taking the prey down in combat. The Eat() function analyzed the energy content of food or a dead organism and added it to the anim’s energy total. The Think() function allowed the anims to differentiate between multiple environments (created later) and select the best one to forage in. 
	After the code was written, debugging began. To debug the program, it was tested several times in succession to determine the effectiveness of the time-seeded random number generator, the effectiveness of the mutation and crossover rates, and the overall function of the program. After debugging, optimization began. Optimization consisted of cleaning small pieces of code to make them run faster. This included rendering displays and streamlining user interface.	