Skip to main content

This is ultimate library to create your own chess simulator!

Project description

OOPChess

A Python chess library built with object-oriented programming principles. Provides a board representation, piece classes, and movement logic as a reusable package.

Project Structure

OOPChess/
 > setup.py             # Package setup
 > setup.cfg
 > ChessLib/
    > __init__.py      # Public package exports
    > chess_unit.py    # Base class for all pieces
    > chess_table.py   # Chess board logic
    > rook.py          # Rook piece
    > bishop.py        # Bishop piece
    > knight.py        # Knight piece
    > king.py          # King piece
    > queen.py         # Queen piece
    > pawn.py          # Pawn piece

Requirements

  • Python 3.10+ (uses match/case syntax)

No external dependencies.

Installation

Clone the repository and install the package locally:

git clone https://github.com/Salmon-bit/OOPChess
cd OOPChess
pip install -e .

Also you can install it with pip:

pip install ultimate-chesslib

Or just use ChessLib directly by placing it next to your script.

Quick Start

from ChessLib.chess_table import ChessTable

# Create a new board with pieces in starting positions
board = ChessTable()
print(board)

# Get a piece at a position (row, col) — 0-indexed, top-left is (0, 0)
piece = board.get_unit((7, 1))  # White Knight
print(piece)  # White Knight at b-1.

# Move a piece
board.move_unit((7, 1), (5, 2))
print(board)

Board output example

+---+---+---+---+---+---+---+---+---+
| 8 | R | K | B | Q | + | B | K | R |
| 7 | P | P | P | P | P | P | P | P |
| 6 | . | . | . | . | . | . | . | . |
| 5 | . | . | . | . | . | . | . | . |
| 4 | . | . | . | . | . | . | . | . |
| 3 | . | . | . | . | . | . | . | . |
| 2 | P | P | P | P | P | P | P | P |
| 1 | R | K | B | Q | + | B | K | R |
+---+---+---+---+---+---+---+---+---+
| x | a | b | c | d | e | f | g | h |
+---+---+---+---+---+---+---+---+---+

Piece symbols: R = Rook, K = Knight, B = Bishop, Q = Queen, + = King, P = Pawn

API Reference

ChessTable

The main board class.

Method Description
__init__() Creates a new board with pieces in standard starting positions
get_unit(position) Returns the piece at (row, col), or None if empty
set_unit(position, piece) Places a piece (or None) at a position
move_unit(position, destination) Moves a piece from one square to another
get_list() Returns the full board as a list[list]

ChessUnit (base class for all pieces)

All piece classes (Rook, Bishop, Knight, King, Queen, Pawn) inherit from ChessUnit.

Method Description
__init__(pos, side) pos is (row, col), side is 'white' or 'black'
get_pos() Returns current position as (row, col)
convert_pos() Converts position to chess notation, e.g. ('b', 1)
check_available(dest, map) Returns True if the destination square is empty
goto(dest, map) Moves the piece to dest if available
map_view() Returns the single-character board symbol for the piece

Coordinate system

Positions use (row, col) tuples, 0-indexed from the top-left:

  • (0, 0) = top-left = a8 (black's back rank)
  • (7, 7) = bottom-right = h1 (white's back rank)

Extending with a new piece

Subclass ChessUnit and implement map_view():

from .chess_unit import ChessUnit

class MyPiece(ChessUnit):
    def __init__(self, pos, side):
        super().__init__(pos, side)

    def map_view(self) -> str:
        return 'M'  # Symbol shown on the board

Then add it to chess_table.py imports and __init__.py exports.

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

ultimate_chesslib-0.0.7.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

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

ultimate_chesslib-0.0.7-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file ultimate_chesslib-0.0.7.tar.gz.

File metadata

  • Download URL: ultimate_chesslib-0.0.7.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ultimate_chesslib-0.0.7.tar.gz
Algorithm Hash digest
SHA256 2e46207a32a84b2bca3d77c72d2c64c3153d30517f8ad52eead404de9a2e9854
MD5 3cccfcfaa2b400d830c8ecf3efbc4114
BLAKE2b-256 f7065593316886af63f3aa35e7f04cc9cf38e9c6875ae7cab3fcf838d05a4a94

See more details on using hashes here.

File details

Details for the file ultimate_chesslib-0.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for ultimate_chesslib-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ddeb41aed18fa3e5115cd73018d23a81d23c71e2f6d2c855994014d7503fb71c
MD5 2cdbe73c7cc1383848b4e8d761b760d7
BLAKE2b-256 fd7d0d1ac166ea68bc7e7b624b89ce0ea1e081cf015e44ab04d86880108fc491

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