A Conway's Game of Life implementation using numpy and pygame.
This project has no particular aim. It is a purely personal project and barely maintained.
It is a CLI based Conway's Game of Life implementation using numpy for fast calculations and pygame for an interactive simulation.
No Hashlife or Quicklife algorithm support (yet).
Rules of Conway's Game of Life
- Any live cell with two or three live neighbors survives.
- Any dead cell with three live neighbors becomes a live cell.
- All other live cells die in the next generation. Similarly, all other dead cells stay dead.
Install using pip
pip install cgol
Manually install using CLI
git clone https://github.com/INeido/CGOL
pip install -e CGOL/.
If you encounter any errors during the installation process, consider the following options:
If pip is not found you can try to access it using
python -m pip
or install it using
python -m ensurepip
You can attempt to install using pipx, a tool designed for running Python applications in isolated environments
pipx install cgol
If issues persist, create a virtual environment and install within it for a clean and isolated setup
python -m venv .venv
source .venv/bin/activate
pip install cgol
NOTE: If you installed using pipx you might have to run pipx ensurepath
once or prepend pipx run
to the example commands below.
Here are some examples.
Start a simulation with the default setting but with a custom seed.
cgol -se 42
Change grid size, cell size and fade color.
cgol -cf 130 20 0 -cs 8 -gh 90 -gw 160
Change the color to white on black without fade.
cgol -fa False -ca 255 255 255
Draw with the mouse to birth or kill cells.
usage: CGOL [-h] [-rw RW] [-rh RH] [-ca CA [CA ...]] [-cd CD [CD ...]] [-cf CF [CF ...]] [-cb CB [CB ...]] [-cs CS] [-gw GW] [-gh GH] [-ti TI] [-se SE]
[-ps [PS]] [-po [PO]] [-fr FR] [-fd FD] [-to [TO]] [-fa [FA]]
Conway's Game of Life
options:
-h, --help show this help message and exit
-rw RW Width of the Game.
-rh RH Height of the Game.
-ca CA [CA ...] Color for alive cells. 'R G B'
-cd CD [CD ...] Color for dead cells. 'R G B'
-cf CF [CF ...] Color to fade dead cells to. 'R G B'
-cb CB [CB ...] Color for dead cells. 'R G B'
-cs CS Size of a cell in pixel.
-gw GW Width of the World.
-gh GH Height of the World.
-ti TI Number of times the game shall update in a second (FPS).
-se SE Seed value used to create World.
-ps [PS] Game pauses on a stalemate.
-po [PO] Game pauses when only oscillators remain.
-fr FR Value by which a cell should decrease every generation.
-fd FD Value a cell should have after death.
-to [TO] Enables toroidal space (Cells wrap around edges).
-fa [FA] Enables fade effect.
Argument | Description | Default Value |
---|---|---|
-rh | Height of the Game. | 720 |
-rw | Width of the Game. | 1280 |
-ca | Colour for alive cells. 'R G B' | 255, 144, 0 |
-cd | Colour for dead cells. 'R G B' | 0, 0, 0 |
-cf | Colour to fade dead cells to. 'R G B' | 0, 0, 0 |
-cb | Colour of background. 'R G B' | 16, 16, 16 |
-cs | Size of a cell in pixel | 8 |
-sx | Height of the World. | 90 |
-sy | Width of the World. | 160 |
-ti | Number of times the game shall update in a second (FPS). | 60 |
-se | Seed value used to create World. | -1 |
-ps | Game pauses on a stalemate. | False |
-po | Game pauses when only oscillators remain. | False |
-fr | Value by which a cell should decrease every generation. | 0.01 |
-fd | Value a cell should have after death. | 0.5 |
-to | Enables toroidal space (Cells wrap around edges). | True |
-fa | Enables fade effect. | True |
Button | Description |
---|---|
ESC | Closes game. |
RETURN | Pauses game. |
Left Click | Births cell. |
Right Click | Kills cell. |
Middle Click | Drags screen. |
Middle Scroll | Zoom in and out. |
R | Reset game. |
F | Fill with random cells. |
A | Fill with alive cells. |
D | Fill with dead cells. |
K | Kill alive cells. |
R | Reset game. |
L | Load last saved game. |
S | Save current game. |
C | Center view. |
P | Save screenshot. |
I | Toggle Insert Mode. |
Left Click | (Insert Mode) Place loaded pattern. |
Middle Scroll | (Insert Mode) Rotate loaded pattern. |
1 | Load 1.rle . |
2 | Load 2.rle . |
3 | Load 3.rle . |
Right Arrow | Forward one generation. |
+ | Extend grid by one cell in every direction. |
- | Reduce grid by one cell in every direction. |