chessops
chessops copied to clipboard
Chess and chess variant rules and operations in TypeScript
chessops
Chess and chess variant rules and operations in TypeScript.
Documentation
Features
- Read and write FEN
- Vocabulary
-
Square
-
SquareSet
(implemented as bitboards) -
Color
-
Role
(piece type) -
Piece
(Role
andColor
) -
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
File an issue to request more.
Example
import { parseFen } from 'chessops/fen';
import { Chess } from 'chessops/chess';
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.