Skip to main content

A Python3 library that you can use to play a game of draughts.

Project description

python-draughts

PyPI version

Based on ImparaAI/checkers and using various concepts from RoepStoep/draughtsnet.

A Python3 library that you can use to play a game of draughts. This is just a set of classes that you can use in your code, it's not an interactive shell draughts game (unlike python-chess and python-shogi for the games chess and shogi respectively).

Assumptions

The rules used are for competitive International draughts (also called Polish draughts or International checkers). This means a 10x10 board with force captures and regular kings. Also supporting various other draughts variant (description on supported variants).

Each position on the board is numbered 1 to 50. Each move is represented as an array with two values: starting position and ending position. So if you're starting a new game, one of the available moves is [9, 13] for player 1. If there's a capture move, the ending position is the position the capturing piece will land on (i.e. two rows from its original row), which might look like [13, 22].

Each piece movement is completely distinct, even if the move is part of a multiple capture series. In Portable Draughts Notation mutli-capture series are usually represented by a 5-32 (for a particularly long series of jumps), but in certain situations there could be multiple pathways to achieve that final position. This game requires an explicit spelling out of each distinct move in the multi-capture series.

Note: Just examples, not necessarily legal positions/moves.

Usage

  • Create a new game:
from checkers.game import Game

game = Game()
  • See whose turn it is:
game.whose_turn() #1 or 2
  • Get the possible moves:
game.get_possible_moves() #[[9, 13], [9, 14], [10, 14], [10, 15], [11, 15], [11, 16], [12, 16]]
  • Make a move:
game.move([9, 13])
  • Check if the game is over:
game.is_over() #True or False
  • Find out who won:
game.get_winner() #None or 1 or 2
  • Review the move history:
game.moves #[[int, int], [int, int], ...]

Change the consecutive noncapture move limit (default 40 according to the rules):

game.consecutive_noncapture_move_limit = 20
game.move_limit_reached() #True or False
  • Review the pieces on the board:
for piece in game.board.pieces:
	piece.player #1 or 2
	piece.other_player #1 or 2
	piece.king #True or False
	piece.captured #True or False
	piece.position #1-32
	piece.get_possible_capture_moves() #[[int, int], [int, int], ...]
	piece.get_possible_positional_moves() #[[int, int], [int, int], ...]

To do

Acknowledgements

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

python-draughts-0.3.tar.gz (15.1 kB view details)

Uploaded Source

File details

Details for the file python-draughts-0.3.tar.gz.

File metadata

  • Download URL: python-draughts-0.3.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.1 requests/2.20.1 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/2.7.15+

File hashes

Hashes for python-draughts-0.3.tar.gz
Algorithm Hash digest
SHA256 6fca5f90b6814294b6e2cc49e66bd0d7adccb9737079f564c6c62a7a24d883d1
MD5 cd736be6a7b04e3869aa91aad88926e4
BLAKE2b-256 725777e2bb60b05293e057cab01ecc16cca7db1f75de405b375ab14505dde26f

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