IN101 project on Conway's Game of Life
Conway's Game of Life Documentation

Author: Victor Colomb (vic.c.nosp@m.ol@h.nosp@m.otmai.nosp@m.l.fr)

See source code here.

General

Conway's game of life follows the following rules:

Neighbors are the eight surrounding cells (vertically, horizontally and diagonally).

We provide a naive implementation for the simulation universe using a string to store the universe cells (see detailed information here) as well as a linked list implementation featuring an option for the universe to be expandable (see detailed information here).

Installation

In the terminal:

Usage

Source textfiles

Universes are loaded from text files formatted as follows:

width height
number_of_steps
universe_cells_state

where universe cells follow the convention . for a dead cell and o for a live one.

Here's an example for a 3x4 universe:

3 4
3
.o..
..o.
ooo.

Command-line usage

./app-naive-loader filename
Options:
filename: source textfile (see formatting above)
./app-naive-conway [-ipt?] filename
Options:
-i: generate image output for each step
-p: print simulation steps to the console
-t: consider the universe as a torus
-?: print source textfile formatting help
filename: source textfile to load the universe from
./app-list-loader filename
Options:
filemane: source textfile
./app-list-conway [-ipte?] filename
Options:
-i: generate image output for each step
-p: print simulation steps to the console
-t: consider the universe as a torus
-e: consider the universe as expandable (incompatible with a torus universe!)
-?: print source textfile formatting help
filename: source textfile to load the universe from

Build and run

Use make run-<app_name> [ARGS=""] to build and run an executable (make run-test-naive-conway or make run app-list-conway ARGS="-i file.txt" for example).

Use make valgrind-<app_name> [ARGS=""] to build and run an executable under the valgrind tool.

Tests

We provide a series of tests to verify that all the provided function work properly.
Use make launch-test to execute them all.

See detailed information on the related page here.

Additional features

See detailed information on the related page here.