A draughts library for Python with move generation, SVG visualizations, PDN reading and writing, engine communication and balloted openings
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydraughts-0.6.7.tar.gz.
File metadata
- Download URL: pydraughts-0.6.7.tar.gz
- Upload date:
- Size: 183.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbbaf4cbf3ddadf7c641e83b7155b02bb28310b5ea35963c76523add88c3c671
|
|
| MD5 |
ff882110976a8d75fa13bd974f4a2279
|
|
| BLAKE2b-256 |
3b7dd0fa619725e5771a102fac88f04feea2dc24c3f0118ac04c61b7fa9c7005
|
File details
Details for the file pydraughts-0.6.7-py3-none-any.whl.
File metadata
- Download URL: pydraughts-0.6.7-py3-none-any.whl
- Upload date:
- Size: 195.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60ac89bbd00642ecf19dd981e9ccd4f86d3c0036f9c8d655213c4b7e1f8e7087
|
|
| MD5 |
72dbf42395c45d78ba953c47f4c5f793
|
|
| BLAKE2b-256 |
a643249a34530f590dd041c3825fb2b4e67345c1821f93bfdb60652340b59408
|