Lioness100 / guess-that-lang

CLI game to see how fast you can guess the language of a code block!
Apache License 2.0
168 stars 7 forks source link
cli cli-game fun game rust

Guess That Lang!

Share Your High Score

CLI game to see how fast you can guess the language of a code block!

If you like the game, please consider giving a ⭐!

Game Demo

Code is retrieved from either random repos or random gists on GitHub using any of the top 24 most popular languages from the Stack Overflow 2022 Developer Survey. VBA is replaced with Dockerfile

The code is then processed in a number of ways to make the experience more enjoyable.

Installation

Using Prebuilt Binaries -
With Bash ```sh curl -fsSL "https://bina.egoist.dev/Lioness100/guess-that-lang" | sh ``` > Using [Bina](https://bina.egoist.dev/)
  • Manual Installation Prebuilt binaries are available for Windows, Linux, and macOS and can be found attached to the [latest release](https://github.com/Lioness100/guess-that-lang/releases/latest).

Building From Source > ⚠️ Rust 1.63.0 or higher is required to build. Rust can be updated with `rustup update`. Install [Rust](https://www.rust-lang.org/tools/install) and then run: ```sh cargo install guess-that-lang ```


Usage

It's strongly recommended to provide a Github personal access token. This will allow the game to make more Github requests before getting ratelimited. Click here to make one (no scopes are required).

⚠️ Resizing the terminal window while playing will cause the game to go a bit wonky.

# Tokens will be stored in a config file so you only need to input them once.
guess-that-lang --token "XXX" # or -t

# Get code from gists rather than repos.
# Repos generally provide better code quality, but gists require less API calls.
guess-that-lang --provider gists # or -p

# Wait 5 seconds after showing the options before starting to reveal code. (Default: 1500)
guess-that-lang --wait 5000 # or -w

# Reveal lines in random order instead of top to bottom. (Default: false)
guess-that-lang --shuffle # or -s

# Theme overrides will be stored in a config file so you only need to input them once.
guess-that-lang --theme dark
guess-that-lang --theme light

Acknowledgements

This game takes heavy inspiration from both guessthiscode and stripcode.

Contributing

I'm a beginner at Rust, so if you see any code that can be improved or have any general ideas, please let me know! Feel free to open an issue or a pull request.