pydraughts
pydraughts is a draughts (checkers) library for Python with move generation, SVG visualizations, PDN reading and writing, engine communication and balloted openings. It is based on ImparaAI/checkers.
Installing
Download and install the latest release:
pip install pydraughts
Features
Variants:
- Standard (International)
- Frisian
- frysk!
- Antidraughts
- Breakthrough
- Russian
- Brazilian
- English/American
- Italian
- Turkish
Engine protocols:
- Hub
- DXP
- CheckerBoard
PDN Reading and Writing
- Import pydraughts
from draughts import Board, Move, WHITE, BLACK
- Create a game
board = Board(variant="standard", fen="startpos")
- Make a move
move = Move(board, steps_move=[34, 30])
board.push(move)
# Multi-capture
board2 = Board(fen="W:WK40:B19,29")
board2.push(Move(board2, pdn_move='40x14'))
- Get a visual representation of the board as SVG
from draughts import svg
svg.create_svg(Board(fen="B:W16,19,33,34,47,K4:B17,25,26"))
- Get a visual representation of the board in the terminal
print(board)
"""
| b | | b | | b | | b | | b
---------------------------------------
b | | b | | b | | b | | b |
---------------------------------------
| b | | b | | b | | b | | b
---------------------------------------
b | | b | | b | | b | | b |
---------------------------------------
| | | | | | | | |
---------------------------------------
| | | | | | | | w |
---------------------------------------
| w | | w | | w | | | | w
---------------------------------------
w | | w | | w | | w | | w |
---------------------------------------
| w | | w | | w | | w | | w
---------------------------------------
w | | w | | w | | w | | w |
"""
- Get legal moves
moves = board.legal_moves()
- Detect wins and draws
has_white_won = board.winner() == WHITE
is_draw = board.winner() == 0
winnner = board.winner()
is_game_over = board.is_over()
- Convert move to other types
move = Move(board, board_move=moves[0].board_move).pdn_move
- Get fen
fen = game.fen
- Communicate with engines
from draughts.engine import HubEngine, Limit
engine = HubEngine(["scan.exe", "hub"])
engine.init()
limit = Limit(time=10)
engine_move = engine.play(board, limit, ponder=False)
- Read PDN games
from draughts.PDN import PDNReader
games = PDNReader(filename=filepath)
game = games.games[0]
moves = game.moves
- Write PDN games
from draughts.PDN import PDNWriter
games = PDNWriter(filename=filepath, board=board)
- Get a ballot
from draughts.ballots import Ballots
ballots = Ballots('english')
ballot1 = ballots.get_ballot()
ballot2 = ballots.get_ballot()
- Run tournaments
from draughts.tournament import RoundRobin
player1 = (["scan.exe", "hub"], "hub", {}, None)
player2 = ("kr_hub.exe", "hub", {}, None)
players = [player1, player2]
tournament = RoundRobin("tournament.pdn", players, start_time=20, increment=0.2, games_per_pair=4)
scores = tournament.play()
print(scores)
tournament.print_standings()
Example Engines
Some engines that can be used with pydraughts.
| Engine | Protocol |
|---|---|
| Kingsrow (international) | Hub & DXP |
| Scan | Hub & DXP |
| Moby Dam | DXP |
| Kingsrow (english) | CheckerBoard |
| Kingsrow (italian) | CheckerBoard |
| Cake | CheckerBoard |
| Kallisto | CheckerBoard |
Selected Projects
If you like, share your interesting project that uses pydraughts.
| Projects |
|---|
| Checkers Reinforcement Learning — https://github.com/d3da/checkers-rl |
Acknowledgements
Thanks to fishnet which was modified to add support for Hub engines. Thanks to akalverboer for their DXC100_draughts_client which was modified to add support for DXP engines.
License
pydraughts is licensed under The MIT License. Check out LICENSE for the full text.
The licenses of the other projects that pydraughts uses are in the other_licenses folder.
Metadata
Release files for pydraughts 0.6.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pydraughts-0.6.7.tar.gz | 183.4 kB | Without provenance | Details for pydraughts-0.6.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pydraughts-0.6.7-py3-none-any.whl | Python 3 | none | any | Details for pydraughts-0.6.7-py3-none-any.whl |
Total release size: 378.6 kB
Release files / pydraughts-0.6.7.tar.gz
| Download URL | pydraughts-0.6.7.tar.gz |
|---|---|
| Size | 183.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cbbaf4cbf3ddadf7c641e83b7155b02bb28310b5ea35963c76523add88c3c671
|
|
BLAKE2b-256 checksum How to use checksums |
3b7dd0fa619725e5771a102fac88f04feea2dc24c3f0118ac04c61b7fa9c7005
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.7
|
Release files / pydraughts-0.6.7-py3-none-any.whl
| Download URL | pydraughts-0.6.7-py3-none-any.whl |
|---|---|
| Size | 195.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
60ac89bbd00642ecf19dd981e9ccd4f86d3c0036f9c8d655213c4b7e1f8e7087
|
|
BLAKE2b-256 checksum How to use checksums |
a643249a34530f590dd041c3825fb2b4e67345c1821f93bfdb60652340b59408
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.7
|
Security for pydraughts 0.6.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.