#terminal #game #life #cli #conway #game-of-life #implementation #package #of

app terminal_game_of_life

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

2 releases (1 stable)

1.0.0 Apr 9, 2021
0.1.0-alpha Apr 9, 2021

#27 in Games

MIT license

53KB
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

~15MB
~314K SLoC