/* * README of Game Of Life * * INTRODUCTION: * * This Java project is a Game of life. The simulation * is controlled through a graphical user interface * (GUI). There are 2 types of cells (alive: green blocks, * dead: black blocks). They interract with each other according * to the number of living or dead cell around. For a cell to stay alive, * it need to have 2 or 3 neighbours. If it's less or more, it * will die. If a dead cell has exctly 3 living neughbours, * it will come to life. The simulation includes agents that * interact based on predefined rules. * * * USAGE: * * Use the GUI controls to interact with the simulation: * - Start/Pause: Control the execution of the simulation. * - Toggle Click: Toggle different actions when clicking on cells. * - Toggle Borber: Toggle looping border for the grid. * - Speed slider: Increases or decreases the delay between simulation steps. * - Files load: You can load different types of files: * . World: Already predifined worlds to test * . Rules: You can set different types of rules that differe from Conway's rules * . Agents: It's the state the cell is in (dead or alive) and that can make a * pattern emerge. * - Files saves: You can save new agents, files or rules. * - Random fields: You can create a random world * - Density slider: You can have a random field that is more dense when moving from * left to right. * * STRUCTURE: * * The main components of the project are: * - Simulator.java: This class implements the simulation logic, including grid * management, agent behavior, and simulation control. * - Agent.java: Represents different types of agent in the simulation. * - Gride.java: Manages the grid structure used in the simulation. * - Cell.java: Represents individual cells within the grid. * - Sheep.java: It's an extention of the game. We can add either sheeps or wolves. * a sheep needs a cell to survive and a wolf needs a sheep to survive. It can simulate the environment * between animals and it can show if there are domination of certain species over others. * * ADDITIONAL NOTES: * * There are a lot of personnalization possible. It is possible to change the color of cells, it is * also possible to extend the grid to have an infinite grid and the possibility to zoom in or out. * It is possible to create variances, when changing rules (changing number of neighbours), agents * or world. */