Conway’s Game of Life

Conway’s Game of Life consists of a grid of cells, each either living or dead. Below shows an example grid, with living cells being represented by the black squares.

The Game of Life runs in generations, with the following rules being applied each generation:

  1. Each living cell with 0 or 1 neighbors dies (from solitude)
  2. Each living cell with 2 or 3 neighbors survives
  3. Each living cell with 4 or more neighbors dies (from overpopulation)
  4. Each dead cell with 3 neighbors becomes living

Such simple rules can lead to some very interesting results! Here, one person managed to create a fully functioning digital clock:

Now, try to create your own Conway’s Game of Life program. Some suggestions:

  • Store the grid of cells in a 2D array
  • Advance to the next generation when the user presses the enter key
    • To wait for the enter key to be pressed, use std::cin.get();

To check that your program works, compare it with playgameoflife.com. Also, you can press “Lexicon” to see a list of interesting cell arrangements others have found.

Example Program Usage:

- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - # - - - - - - - - - - 
- - - - - - - - - - # - - - - - - - - - 
- - - - - - - - # # # - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 

Press enter to continue...

- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - # - # - - - - - - - - - 
- - - - - - - - - # # - - - - - - - - - 
- - - - - - - - - # - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 

Press enter to continue...

- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - # - - - - - - - - - 
- - - - - - - - # - # - - - - - - - - - 
- - - - - - - - - # # - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - 

Press enter to continue...