Artificial Life Simulator
This project was the first piece of coursework for my Java module in Second Year. It involved using the Swing GUI to create a simulation where artificial life interact with a world. The big downside for this project was having to use Swing due to the fact we weren't allowed to use any GUI builders and therefore had to manually code the GUI, and also rendering the life form's world in Swing meant that they had to be JLabels with images, and thus updating them often (multiple times a second) was very slow.
The simulation contained multiple types of life forms, each with different behaviour. There was the herbivore: which ate plants in the map. The carnivore: which ate herbivores. The nestbuilder: which ate plants and was able to build a defensive nest to protect itself from carnivores. And the ghost which was able to walk through the obstacles. Another highlight of the project was using a clustering algorithm to generate different types of landscape (though this didn't affect the simulation, only its visual appearance).
This project and its related report gave me a mark of 90%

