A whack Conway's Game of Life implementation.
Project description
CGOL ·
A Conway's Game of Life implementation using numpy and pygame.
Description
This project has no particular aim. It is a purely a 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.
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.
Installing
Install using pip
pip install cgol
Manually install using CLI
git clone https://github.com/INeido/CGOL
pip install -e CGOL/.
Usage
Here are some examples.
Start a simulation with the default setting but with a custom seed.
cgol -s 42
Change grid size, cell size and fade color.
cgol -cf 130 20 0 -cs 8 -sx 90 -sy 160
Change the color to white on black without fade.
cgol -fd 0.0 -ca 255 255 255
Draw with the mouse to birth or kill cells.
Arguments
usage: CGOL [-h] [--res-h RH] [--res-w RW] [--colour-alive CA [CA ...]] [--colour-dead CD [CD ...]] [--colour-fade CF [CF ...]]
[--colour-background CB [CB ...]] [--cell_size CS] [--size-x SX] [--size-y SY] [--tickrate T] [--seed S] [--save-file F] [--load L]
[--pause-stalemate PS] [--pause-oscillators PO] [--fade-rate FR] [--fade-death-value FD]
Conway's Game of Life
options:
-h, --help show this help message and exit
--res-h RH, -rh RH Height of the Game.
--res-w RW, -rw RW Width of the Game.
--colour-alive CA [CA ...], -ca CA [CA ...]
Colour for alive cells. 'R G B'
--colour-dead CD [CD ...], -cd CD [CD ...]
Colour for dead cells. 'R G B'
--colour-fade CF [CF ...], -cf CF [CF ...]
Colour to fade dead cells to. 'R G B'
--colour-background CB [CB ...], -cb CB [CB ...]
Colour for dead cells. 'R G B'
--cell_size CS, -cs CS
Size of a cell in pixel.
--size-x SX, -sx SX Height of the World.
--size-y SY, -sy SY Width of the World.
--tickrate T, -t T Number of times the game shall update in a second (FPS).
--seed S, -s S Seed value used to create World.
--save-file F, -f F Path of the in-/output file. (Should be .csv)
--load L, -l L Load revious save.
--pause-stalemate PS, -ps PS
Game pauses on a stalemate.
--pause-oscillators PO, -po PO
Game pauses when only oscillators remain.
--fade-rate FR, -fr FR
Value by which a cell should decrease every generation.
--fade-death-value FD, -fd FD
Value a cell should have after death.
Argument | Description | Default Value |
---|---|---|
--res-h (-rh) | Height of the Game. | 720 |
--res-w (-rw) | Width of the Game. | 1280 |
--colour-alive (-ca) | Colour for alive cells. 'R G B' | 255, 144, 0 |
--colour-dead (-cd) | Colour for dead cells. 'R G B' | 0, 0, 0 |
--colour-fade (-cf) | Colour to fade dead cells to. 'R G B' | 0, 0, 0 |
--colour-background (-cb) | Colour of background. 'R G B' | 16, 16, 16 |
--cell-size (-cs) | Size of a cell in pixel | 16 |
--size-x (-sx) | Height of the World. | 45 |
--size-y (-sy) | Width of the World. | 80 |
--tickrate (-t) | Number of times the game shall update in a second (FPS). | 30 |
--seed (-s) | Seed value used to create World. | -1 |
--save-file (-f) | Path of the in-/output file. (Should be .csv) | './cgol.csv' |
--load (-l) | Load revious save. | False |
--pause-stalemate (-ps) | Game pauses on a stalemate. | False |
--pause-oscillators (-po) | Game pauses when only oscillators remain. | False |
--fade-rate (-fr) | Value by which a cell should decrease every generation. | 0.01 |
--fade-death-value (-fd) | Value a cell should have after death. | 0.5 |
Controls
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. |
Right Arrow | Forward one generation. |
+ | Extend grid by one cell in every direction. |
- | Reduce grid by one cell in every direction. |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file CGOL-0.8.0.tar.gz
.
File metadata
- Download URL: CGOL-0.8.0.tar.gz
- Upload date:
- Size: 21.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 949713f66b5a017410e91e33173a7b4d64398a6aeb384009db7de0d4150ca2f9 |
|
MD5 | 2cbcd228beecddb11e0bd6b2e7211656 |
|
BLAKE2b-256 | 427bc1db8c7596626f9ec705a567c756cf3cf268ab19e50179941d23ae0356b0 |
File details
Details for the file CGOL-0.8.0-py3-none-any.whl
.
File metadata
- Download URL: CGOL-0.8.0-py3-none-any.whl
- Upload date:
- Size: 22.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c2eb9f400cdcaee579eaa9b894a99f37adabf3f2e8339c1d84974e6f557044f |
|
MD5 | d636d2d031a29416efd8fe275d53b878 |
|
BLAKE2b-256 | 8ec06386d4096f75ed1c7131bace6510eaa3bb8b21e0b9c461bddfcc0b808112 |