Chess and chess variant rules and operations in TypeScript.
- 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
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());
chessops is licensed under the GNU General Public License 3 or any later version at your choice. See LICENSE.txt for details.