Skip to content

niklasf/chessops

Repository files navigation

chessops

Test npm

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.

About

Chess and chess variant rules and operations in TypeScript

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published