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.2.tar.gz (5.0 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.2-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ultimate_chesslib-0.0.2.tar.gz
  • Upload date:
  • Size: 5.0 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.2.tar.gz
Algorithm Hash digest
SHA256 c63949ec77143179a26501d2d172c470af163c1412416eecea34eead83824bf0
MD5 d12e2e7f2fa750e656f429a67f89da92
BLAKE2b-256 20f7c125ba0b8597ae7887175ea55a1dc3e79d628e08659ea90a9cf46bc1754b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ultimate_chesslib-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b992fe27d665465cff2f83ed7ea5c1d8ee363ac5feccea40bd81498382d1387c
MD5 92e0297f4b5e937ffd873f0521570265
BLAKE2b-256 ececb5a2a932a86034185c89426c1419dc2b8eb70992080d24f8798632df3148

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