#life #conway #terminal-game #game-of-life #package #width #height

app terminal_game_of_life

Conway's game of life implementation as a CLI rust crate

3 releases (stable)

1.0.1 Jul 1, 2023
1.0.0 Apr 9, 2021
0.1.0-alpha Apr 9, 2021

#225 in Games

MIT license

54KB
1.5K SLoC

GameOfLife

The implementation of the Conway's Game of Life rust package

Installation

$ cargo install terminal_game_of_life

Usage

$game-of-life -i https://example.com --live-cell +
$game-of-life -i /path/to/file.txt --height 35 --width 35
$game-of-life -s 1337 --delay 250

Check game-of-life --help for usage info.

USAGE:
    game-of-life [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -s, --seed <seed>              Specify the seed number to use as an initial state [default: random]
    -i, --input <input>            Specify the path/URL for the file to use as an initial state. (used instead of seed)
        --width <width>            Specify the width of generated universe. [default: terminal width]
        --height <height>          Specify the width of generated universe. [default: terminal height]
        --live-cell <live-cell>    Specify the live-cell representation [default: █]
        --dead-cell <dead-cell>    Specify the dead-cell representation [default:  ]
    -d, --delay <delay>            Specify the introduced delay between each generation [default: 50]

Demo

asciicast

Development

  • Install rustup via curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
  • Install rust stable version for development rustup update
  • Install rust nightly for testing via rustup install nightly
  • Clone the repo
  • Navigate to the rust CLI implementation cd game-of-life/CLI/rust.
  • run cargo build to build the crate/CLI binaries.
  • run cargo run -- to run the built binaries.

Linting

Run cargo fmt -- --check

Testing

Run cargo +nightly test

Documentation

Run cargo doc

Release

  • Update the version number
  • Run cargo build --release and commit changes
  • Update the CHANGELOG
  • Create a git tag rust/v#{version_number} ex: rust/v0.1.1-pre

Extra information

Contributing

License

Code of Conduct

Dependencies

~15–25MB
~427K SLoC