An Ncurses implementation of Conway's Game of Life and other cellular automaton rules
Build a debug version with make, and a version without debug symbols by running make release. The program will be put in the build/ directory. Make sure that you have ncurses-dev or your distro's equivalent package installed.
Running the program without any arguments will launch a random game with Conway's rules. To exit, press 'q'. To pause, press space. When you are paused, you can press 's' to step forward one generation at a time.
The program supports the following optional command line arguments:
--file <path>or-f <path>: Loads a Life 1.05 file describing a pattern and optional ruleset.--seed <num>or-s <num>: When generating a random game, 1/num of every cell will be seeded 'alive'. The higher num, the more cells will start as 'dead'. The seed is not allowed to be a value less than 1.--rule <string>or-r <string>: Tells the game what rules determine how cells live and die. If a file input is specified and that file uses tags that tell what ruleset to use, the file's rules will take precedence. Specify rules in the standard Alive/Born format. Eg: Conway's original rules are that a living cell will continue to live if it has 2 or 3 living neighbours, and a dead cell will be reborn if it has exactly 3 living neighbours. This ruleset would be passed as--rule 23/3. If you wanted cells to stay alive if they have an even number of living neighbours and dead cells to be born if they have exactly 1 neighbour, you would use the ruleset--rule 2468/1. Note that since a cell cannot have more than 8 neighbours, the number 9 is not allowed in the rule string. For more information, please read this.--widescreenor-w: Because the characters in a terminal are taller than they are wide, one cell in the game is represented by 2 screen characters. This is so things look more uniformly square. If you would like to have extra horizontal resolution, passing--widescreenwill use one character to draw one cell.--edge-wrapor-e: If this flag is enabled, cells will "wrap" around the borders. For example, a glider flying toward into the right border will reappear on the left border (still flying right).--time <num>or-t <num>: This value determines the speed of the simulation in milliseconds. The default value is 250. This value cannot be less than 1.--pauseor-p: If this flag is enabled, the game will begin paused (press space to unpause). Useful if you want to examine a pattern at the beginning.
This program can load files in the Life 1.05 file format. Information about the Life 1.05 file format can be found here.