Skip to main content
Board

Board

Build Status Code Climate PyPI version Python27 Python35 License Twitter

License

chess_py is available under the MIT license. See the LICENSE file for more info. Copyright © 2016 Aubhro Sengupta. All rights reserved.

Talk @Pygotham 2016

I gave a talk at PyGotham 2016 on this library. Abstract can be found here.

Introduction

Chess_py is an open source chess library written in Python designed to aid in the creation of chess engines. Handles the chess so you can focus on the engine.

Installation

To use as a immediately start up a game between two human players in the console, navigate inside the root directory of the package and run main.py.

python main.py

To install package

Or manually

python setup.py install

Documentation

View complete technical documentation here.

Great! How do you use it? (An Example)

Chess_py has the capability of creating games between players, either human, or AI

import chess_py
from chess_py import Game, Human, color

""" Creates a Game with 2 humans.
When run, this will open the console,"""
new_game = Game(Human(color.white), Human(color.black))

""" After game is completed, outcome will be stored in result.
The integer result will be one of three values.
white wins - 0, black wins - 1, draw - 0.5 """
result = new_game.play()

To build a chess engine on with chess_py, inherit Player and implement generate_move()

import chess_py
from chess_py import Game, Human, color

# Engine which plays the move with the highest immediate material advantage
class MyEngine(chess_py.Player):
    def __init__(self, input_color):

      # Creates piece value scheme to specify value of each piece.
      self.piece_values = chess_py.PieceValues.init_manual(PAWN_VALUE=1,
                                                            KNIGHT_VALUE=3,
                                                            BISHOP_VALUE=3,
                                                            ROOK_VALUE=5,
                                                            QUEEN_VALUE=9)

      # Super call to
      super(chess_py.Player, self).__init__(input_color)

    def generate_move(self, position):
      # position parameter is an object of type Board

      # Finds all possible moves I can play.
      moves = position.all_possible_moves(self.color)

      # Initalizes best move and advantage after it has been played to dummy values.
      best_move = None
      best_move_advantage = -99

      # Loops through possible moves
      for move in moves:
        """ advantage_as_result(move, piece_values) finds numerical advantage
        as specified by piece value scheme above. Returns negative values for
        positions of disadvantage. Returns +/-99 for checkmate. """
        advantage = position.advantage_as_result(move, self.piece_values)

        # If this move is better than best move, it is the best move.
        if advantage >= best_move_advantage:
            best_move = move
            best_move_advantage = advantage

      return best_move

# If file is run as script, a Game is set up between My_engine and Human and result is printed.
if __name__ == "__main__":
    new_game = Game(MyEngine(color.white), Human(color.black))

    # white wins - 0, black wins - 1, draw - 0.5
    print("Result: ", new_game.play())

Metadata

Release files for chess_py 3.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for chess_py 3.3.1
File Interpreter ABI Platform
chess_py-3.3.1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Release files / chess_py-3.3.1-py2.py3-none-any.whl

Download URL chess_py-3.3.1-py2.py3-none-any.whl
Size 39.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
41834f0c7c27b8d11b8e55237d1af214c1c25a007f4ffac03b9902f7d3c56086
BLAKE2b-256 checksum
How to use checksums
615facf65968bdc614f8ebb50c84788803a042576ac44b6cc01ce68d1016807f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

3.3.1 This release

1 release file

3.3.0

1 release file

3.2.9

1 release file

3.2.8

1 release file

3.2.7

1 release file

3.2.6

1 release file

3.2.5

1 release file

3.2.4

1 release file

3.2.3

1 release file

3.2.2

1 release file

3.2.1

1 release file

3.2.0

1 release file

3.1.9

1 release file

3.1.8

1 release file

3.1.7

1 release file

3.1.6

1 release file

3.1.5

1 release file

3.1.4

1 release file

3.1.3

1 release file

3.1.2

1 release file

3.1.1

2 release files

3.1.0

1 release file

3.0.9

2 release files

3.0.8

2 release files

3.0.7

2 release files

3.0.6

1 release file

3.0.5

1 release file

3.0.4

1 release file

3.0.3

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

2.8.1

1 release file

2.8.0

1 release file

2.7.7

1 release file

2.7.6

2 release files

2.7.5

1 release file

2.7.4

1 release file

2.7.3

1 release file

2.7.2

1 release file

2.7.1

1 release file

2.7.0

1 release file

2.6.7

1 release file

2.6.6

1 release file

2.6.5

1 release file

2.6.4

1 release file

2.6.3

1 release file

2.6.2

1 release file

2.6.0

1 release file

2.5.9

1 release file

2.5.8

1 release file

2.5.7

1 release file

2.5.5

1 release file

2.5.4

1 release file

2.5.3

1 release file

2.5.2

1 release file

2.5.1

1 release file

2.5

1 release file

2.4

1 release file

2.3

1 release file

2.2

1 release file

2.1

1 release file

2.0

1 release file

1.8

1 release file

1.5

1 release file

1.4

1 release file

1.3

1 release file

1.2

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page