Skip to main content

Blindfold chess CLI with built-in engines

Project description

ch0 - Blindfold Chess CLI

PyPI Python License: GPLv3

A minimal terminal game for playing blindfold chess against built-in engines.

  • Install it as a standalone CLI tool
  • Play by entering SAN moves (e4, Nf3, exd5, a8=Q) plus a handful of helpful commands (show, fen, pgn, …)
  • Includes bundled engines (Sunfish, Andoma) and a “bring your own UCI engine” mode
  • Adds post-game analysis after the result is announced

Install

With uv (recommended)

uv tool install play-ch0

With pip

python -m pip install --upgrade play-ch0

Requires Python 3.11+.


Run

After installing, you can launch the game with either entrypoint:

ch0
# or
play-ch0

You’ll start in a lobby where you pick an engine + color, then start.


Quick start gameplay

  • Enter SAN moves: e4, Nf3, exd5, a8=Q, …

  • Or enter commands like:

    • show - show the board (useful if you “peek”)
    • moves - list moves
    • fen - print current FEN
    • pgn - print current PGN (also printed at game end)
    • resign - resign
    • help - show available commands
    • quit - exit

Commands can also be prefixed with : (e.g. :show).

The engine moves automatically on its turn.


Opening book (optional)

If you place a Polyglot opening book file named book.bin in the current working directory when you run ch0, the game will use it for opening-book moves.


Engines

Available options:

  • random - plays random legal moves
  • andoma - bundled engine
  • sunfish - bundled engine
  • uci - use any external UCI engine (e.g., Stockfish) by providing a command/path; played via python-chess

Notes:

  • Sunfish and Andoma are third-party projects vendored under src/ch0/engines/. I don’t create or maintain them.
  • On Windows, ANSI colors work better if colorama is installed (it’s auto-used when present).

Development (from source)

If you want to hack on the repo instead of installing from PyPI:

git clone https://github.com/menisadi/ch0
cd ch0
uv sync
uv run ch0

Licenses / third-party

  • This project is licensed under GPLv3 (see LICENSE).
  • Sunfish is distributed under the GNU General Public License; see src/ch0/engines/sunfish/LICENSE.md.
  • Andoma is distributed under the MIT License; see src/ch0/engines/andoma/LICENSE.

TODO

  • Fix turn bookkeeping - remove game.turn and rely on board.turn
  • Update move numbering / PGN formatting using board.turn before pushing moves
  • Sunfish: validate emitted UCI move is legal
  • Make Polyglot book usage optional
  • Show a subtle “(book)” indicator when a book move is used
  • Add undo (at least one ply)
  • Add status / check command that reports check-like info
  • Decide and implement draw policy: claimable vs automatic handling of draws
  • Add optional PGN autosave to a file (date/engine/color in file-name)
  • Add "illegal moves" count (printed at the end)
  • Add Stockfish bundling or automatic UCI discovery
  • Add post-game analysis

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

play_ch0-1.3.6.tar.gz (100.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

play_ch0-1.3.6-py3-none-any.whl (99.7 kB view details)

Uploaded Python 3

File details

Details for the file play_ch0-1.3.6.tar.gz.

File metadata

  • Download URL: play_ch0-1.3.6.tar.gz
  • Upload date:
  • Size: 100.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for play_ch0-1.3.6.tar.gz
Algorithm Hash digest
SHA256 bba72c0be1fb87898952076d4b676bc7fc4eabe38002fa51b4fcdd15437ea148
MD5 28b998b7124006de6adee9a51c77c9ce
BLAKE2b-256 905666ea752261ebd8a48933bb7c82646f4828b6f775a0e331ba1d0b768c8e40

See more details on using hashes here.

File details

Details for the file play_ch0-1.3.6-py3-none-any.whl.

File metadata

  • Download URL: play_ch0-1.3.6-py3-none-any.whl
  • Upload date:
  • Size: 99.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for play_ch0-1.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 532d4f489c502b162e480f1a254e5fd038f14f56dc5338e040fcb061eea60c97
MD5 5095239548d1774ee70777bb075c0e8d
BLAKE2b-256 4eed87832deefffd85cbf675ccede8b2bcc5ce0f7f1097c924f233bdd7fabdb9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page