This project implements Conway's Game of Life and Langton's Ant.
Both are cellular automaton simulations.
Uses Rich for terminal visualization.
To install make sure you have Python 3.11 or higher and uv installed.
-
Clone the repository:
git clone https://github.com/paulrobello/rich_life.git cd rich_life
-
Install the required dependencies:
uv sync
To install from PyPI, run any of the following commands:
uv tool install rich-life
pipx install rich-life
rich_life
Run the Game of Life simulation using the following command:
uv run rich_life
You can customize the grid size, number of generations, and neighborhood rules using command-line options:
uv run rich_life --width 50 --height 30 --generations 300 --rules moore
Run the Langton's Ant simulation using the following command:
uv run rich_life --mode ants
Available options:
--width
or-w
: Width of the grid (default: half of console height)--height
or-h
: Height of the grid (default: half of console height minus 2)--infinite
or-i
: Enable infinite mode. Simulation grid has no bounds (default: False)--generations
or-g
: Number of generations to simulate (default: 100)--mode
or-m
: Simulation mode (options: 'life' or 'ants', default: 'ants')--rules
or-r
: Neighborhood rules for game of life (options: 'moore' or 'van_neumann', default: 'moore')--offset-x
or-x
: Bord display X-coordinate offset for infinite mode (default: 0)--offset-y
or-y
: Bord display Y-coordinate offset for infinite mode (default: 0)--rps
or-r
: Refresh / generations per second (default: 10)--follow
or-f
: Follow the ant in ANTS mode (default: False)
Keys:
- 'Arrows' / 'WSAD': Pan the grid
To run the tests, use the following command:
uv run pytest tests/test_game_of_life.py
- Version 0.3.0: Added follow mode for Langton's Ant
- Version 0.2.0: Better keyboard handling
- Version 0.1.0: Initial release
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
Paul Robello ([email protected])