Skip to content

It's like chess.js, but in ES6 and can handle variations

License

Notifications You must be signed in to change notification settings

jackstenglein/chess

 
 

Repository files navigation

@jackstenglein/chess

@jackstenglein/chess is a TypeScript chess library based on chess.js and cm-chess. It provides PGN/FEN loading; move generation/validation; variations, including reordering and promoting; tracking the current move and seeking through a PGN; PGN header values; NAGs; comments; check/checkmate/stalemate detection; null moves; and more.

This library is used to power the ChessDojo annotation editor and tactics tests.

Installation

Run the following command to install the most recent version from NPM:

npm install @jackstenglein/chess

Importing

import { Chess } from '@jackstenglein/chess';

Example Code

The code below plays a random game of chess:

import { Chess } from '@jackstenglein/chess';

const chess = new Chess();

while (!chess.isGameOver()) {
    const moves = chess.moves();
    const move = moves[Math.floor(Math.random() * moves.length)];
    chess.move(move);
}

console.log(chess.renderPgn());

Also see the tests for further examples.

User Interface

This is a headless library and does not include user interface elements. ChessDojo has successfully integrated this library with Lichess Chessground.

Features

It has a similar API to chess.js and provides much of the same functionality. However, it also offers additional features:

  • Handles variations in addition to the mainline PGN
  • Handles Chessbase-style null moves (Z0)
  • Handles NAGs and comments
  • Keeps track of the "current move" and allows seeking/traversing through the PGN
  • Allows fetching/setting known PGN headers, as well as arbitrary PGN headers
  • Allows fetching/setting known PGN commands, as well as arbitrary PGN commands
  • Allows subscribing to specific events and receiving notifications in a callback

About

It's like chess.js, but in ES6 and can handle variations

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 100.0%
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy