Download Life
Download Source code to Life
Life was invented by the mathematician John Conway in 1970. Its sort of a game and sort of a simulation. It used to be played on paper with coins or stones until computers got powerful enough to handle it. Once that happened, Life took on a life of its own. Its a really simple game / sim, with only 3 rules. All you have to do is set up the board and watch things unfold in front of you.
First a basic description: Life is played on a 2d grid. Each section of the grid is called a cell. A cell can be in one of two states at any given time, alive or dead.
The rules are as follows:
1. A dead cell with exactly three neighbors becomes a live cell.
2. A live cell with two or three neighbors stays alive.
3. In all other cases, the cell dies or remains dead ( overcrowding or loneliness )
The game runs in generations. At the start of each generation, each rule is applied to each cell before making any changes. Once all cells have been evaluated, their states are changed and the next generation can begin.
This game is an example of a Cellular Automaton, which is a system of rules that, when applied to a substrate like the Life grid, result in emergent behaviour, or behaviour that wasn't planned or expected. This type of system has caught the attention of many scientists and mathematicians because it minics what we know about living systems.
I've implemented Life using C++ with MFC and OpenGL for the input system and graphics. You can download my implementation of life here.
The controls are simple. When the program starts running you will see an empty grid. Left-click on a cell in the grid to change it's state to alive and right-click on a live cell to kill it. When you have your grid set up, click on the green arrow button at the top left and the game begins. The red octagon stops the games, the white circle will kill all the cells on the board, and the "+1" button will advance the game one generation instantly so you can step through it at your own pace. The number of living cells, the generation number, and the current mode of the game are also displayed in white at the top left.
Most of the time, what ever pattern you start with will either die out completely, become an oscillating pattern, or a stable pattern that doesn't change. A rare pattern that was saught after for years is called a shooter. A shooter is a pattern that emits littler "children" at regular intervals which will roam across the screen until they reach the end. Go ahead and try it for yourself. Write your name on the board and see how many generations it lasts.
I encourage everyone to check it out. Its a very interesting concept with real scientific value. If you want to read more about Cellular Automaton I would recommend Artifical Life: A report from the Frontier where computers meet biology, by Steven Levy.