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/casesyntax)
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
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 ultimate_chesslib-0.0.5.tar.gz.
File metadata
- Download URL: ultimate_chesslib-0.0.5.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
953cee5a7d51cdaabbc31a75154a3868b5a24c8000adb9013a36557d3111763b
|
|
| MD5 |
f2bad4585ee39fec4f4d5fb34c5af486
|
|
| BLAKE2b-256 |
3af3c5472b3c0759c6642ce4c206a45153aab78ccfe3a90510ac591230348663
|
File details
Details for the file ultimate_chesslib-0.0.5-py3-none-any.whl.
File metadata
- Download URL: ultimate_chesslib-0.0.5-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f5985af193b7a2834f28d141e75b9fb573edf209847deff7d0d3af3f52962fd
|
|
| MD5 |
f35b1b245564c1663f0266c75ee66ca0
|
|
| BLAKE2b-256 |
abe4192e2f7949939b15533c8420d158a2fd0862fdf59812bfed0caf4b56659a
|