# Simulator for the Game of Life Conway's Game of Life simulator is designed to mimic the evolution of cells in a grid-based environment. This project not only recreates the traditional Game of Life experience but also introduces additional functionalities, such as custom rule sets and agent interactions, to enhance the simulation. ## Introduction The simulator is an implementation of Conway's Game of Life, a cellular automaton devised by mathematician John Conway. It provides users with a platform to observe the dynamic behavior of cells based on a set of predefined rules. In addition to the standard features of the Game of Life, this simulator offers advanced capabilities like custom rule sets, agent dynamics, and an interactive graphical user interface. ## Features The simulator includes several key features to enrich the user experience. It adheres to Conway's original rules, allowing users to explore the classic behavior of the Game of Life. Furthermore, it offers customization options, enabling users to define and save their own rule sets. The introduction of agent dynamics introduces Sheep and Wolf agents that interact within the environment, adding a new layer of complexity to the simulation. The interactive GUI provides users with real-time control over the simulation, allowing them to start, pause, and stop the simulation at their convenience. Users can also adjust the simulation speed, choose between looping or closed borders, and initialize the world with random states. Additionally, the simulator includes robust file management capabilities, allowing users to save and load world states, agents, and rules from files. ## Getting Started To begin using the simulator, users can follow a simple set of instructions to set up and run the simulation. This includes cloning the repository, compiling the project, and executing the main class to launch the graphical user interface. Once the interface is open, users can interact with various buttons and tools to control the simulation and explore its functionalities. ## Using the Interface The interface provides users with a user-friendly environment to interact with the simulation. It features a set of buttons that enable users to start, pause, and stop the simulation, toggle borders, initialize the world with random states, and save or load simulation states from files. Users can also interact directly with the world by clicking on cells to toggle their state, allowing for manual editing of the initial state of the simulation. ## File Formats The simulator supports specific file formats for storing simulation states, agents, and rules. The world state is represented as a grid, with each row in the grid represented on a separate line and cells within a row separated by semicolons. Agents and rules are stored in structured formats, allowing users to save and load custom configurations easily. ## Project Extension> Users can extend the project by experimenting with custom rule sets and agent dynamics. By modifying the rules, users can create new variations of the Game of Life. Similarly, users can expand the range of agent types and behaviors, introducing new elements like predatory wolves that hunt sheep and reproduce, to further explore the dynamics of the simulation.