OOP_D1_Project/ReadMe
yanismebarki 0d6474ded6 depo final 2024-06-01 20:33:18 +02:00
..
ReadMe.java depo final 2024-06-01 20:33:18 +02:00

ReadMe.java

/*
 * 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.
 */