Xiangqi rules and operations in TypeScript. This is a port of chessops to xiangqi.
- Read and write FEN
- Vocabulary
Square
-
SquareSet
(implemented as bitboards) Color
-
Role
(piece type) -
Piece
(Role
andColor
) -
Board
(map of piece positions) -
Setup
(a not necessarily legal position) -
Position
(base class for legal positions,Xiangqi
is a concrete implementation) - Move making
- Legal move generation
- Game end and outcome
- Insufficient material
- Setup validation
- Attacks and rays
- Read and write UCCI 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
- Compatibility: xiangqiground
import { parseFen } from 'elephantops/fen';
import { Xiangqi } from 'elephantops/xiangqi';
const setup = parseFen(
'1nbakabn1/r7r/1c7/p1p1C1p1p/4C2c1/9/P1P1P1P1P/9/9/RNBAKABNR b - - 4 4',
).unwrap();
const pos = Xiangqi.fromSetup(setup).unwrap();
console.assert(pos.isCheckmate());
elephantops is licensed under the GNU General Public License 3 or any later version at your choice. See LICENSE for details.