Project 01: Conway’s Game of Life
Outline
- Program Introduction
- Simulation by Hand
- Program Usage
- Get Started!
Conway’s Game of Life
- 0 player game played on a grid of squares
- Each cell (square) can be alive or dead
- Next step/generation determined by current configuration
- each cell has 8 neighbors
- whether a cell is dead or alive in next generation depends on number of alive neighbors
Your Task
- Complete implementation of Conway’s Game of Life
- Experiment and find “interesting” initial configurations
The Challenges
- Understand and work with a larger program
- given a lot of code, much of it unfamiliar
- understand structure enough to work with the code
- Implement Life
- Use your program to experiment!
The Rules
“Game” played on square grid of cells
- each cell has 8 neighbors
- cells can be in one of two states: alive or dead
- system evolves in rounds
Each Round
State of each cell in the next round is determined state in this round:
- If cell is alive and 2 or 3 live neighbors, it stays alive
- If cell is dead but has 3 live neighbors, it becomes alive
- Otherwise, cell is dead in next round
Simple Examples I (Red = Alive)

Simple Examples II (Red = Alive)

Using the Program
- Compile and run from terminal
- Terminal usage:
java Life <init file> <no. of generations> <interface: Graphic or Text>
Why do People Like CGoL?
- Simple rules, unexpectedly complex behavior
- Behavior is provably unpredictable
- given two configurations there is no algorithm that determines whether a game started from the first config eventually reaches the second
- Can “program” certain behavior
-
Life can simulate an arbitrary computer program
Initialization File Structure
4 4 // dimensions of board (square)
1 1 // coordinates of alive cells
1 2
2 1
2 2
