chessops
chessops
Chess and chess variant rules and operations in TypeScript.
Documentation
View TypeDoc
Features
- Read and write FEN
- Vocabulary
Square
SquareSet
(implemented as bitboards)
Color
Role
(piece type)
Piece
(Role
and Color
)
Board
(map of piece positions)
Castles
Setup
(a not necessarily legal position)
Position
(base class for legal positions, Chess
is a concrete implementation)
- Variant rules:
Standard chess, Crazyhouse, King of the Hill, Three-check,
Antichess, Atomic, Horde, Racing Kings
- Move making
- Legal move and drop move generation
- Game end and outcome
- Insufficient material
- Setup validation
- Supports Chess960
- Attacks and rays
using Hyperbola Quintessence (faster to initialize than Magic Bitboards)
- Read and write UCI move notation
- Read and write SAN
- Read and write PGN
- Parser supports asynchronous streaming
- Game tree model
- Transform game tree to augment nodes with arbitrary user data
- Parse comments with evaluations, clocks and shapes
- Transformations: Mirroring and rotating
- Compatibility:
chessground and
scalachess
Example
import { Chess } from 'chessops/chess';
import { parseFen } from 'chessops/fen';
const setup = parseFen('r1bqkbnr/ppp2Qpp/2np4/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 0 4').unwrap();
const pos = Chess.fromSetup(setup).unwrap();
console.assert(pos.isCheckmate());
License
chessops is licensed under the GNU General Public License 3 or any later
version at your choice. See LICENSE.txt for details.