Skip to content

paulrobello/rich_life

Repository files navigation

Conway's Game of Life and Langton's Ant

PyPI PyPI - Python Version
Runs on Linux | MacOS | Windows Arch x86-63 | ARM | AppleSilicon
PyPI - License

About

This project implements Conway's Game of Life and Langton's Ant.
Both are cellular automaton simulations. Uses Rich for terminal visualization.

"Buy Me A Coffee"

Screenshots

Game of Life Screenshot Langton's Ant Screenshot

Installation

To install make sure you have Python 3.11 or higher and uv installed.

Installation From Source

  1. Clone the repository:

    git clone https://github.com/paulrobello/rich_life.git
    cd rich_life
  2. Install the required dependencies:

    uv sync

Installation From PyPI

To install from PyPI, run any of the following commands:

uv tool install rich-life
pipx install rich-life

Usage

Running if installed from PyPI

rich_life

Running from source

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

Running Tests

To run the tests, use the following command:

uv run pytest tests/test_game_of_life.py

What's New

  • Version 0.3.0: Added follow mode for Langton's Ant
  • Version 0.2.0: Better keyboard handling
  • Version 0.1.0: Initial release

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is open source and available under the MIT License.

Author

Paul Robello (probello@gmail.com)