https://github.com/loks0n/rapid-draughts
A super speedy, blazing fast, rocket-powered TypeScript draughts/checkers engine with move validation, AI and game history.
https://github.com/loks0n/rapid-draughts
bitboard boardgame checkers checkers-engine draughts draughts-engine game
Last synced: 12 months ago
JSON representation
A super speedy, blazing fast, rocket-powered TypeScript draughts/checkers engine with move validation, AI and game history.
- Host: GitHub
- URL: https://github.com/loks0n/rapid-draughts
- Owner: loks0n
- License: mit
- Created: 2023-01-24T15:14:43.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-19T16:25:46.000Z (about 1 year ago)
- Last Synced: 2025-06-26T01:02:32.614Z (12 months ago)
- Topics: bitboard, boardgame, checkers, checkers-engine, draughts, draughts-engine, game
- Language: TypeScript
- Homepage: https://loks0n.dev/projects/rapid-draughts
- Size: 398 KB
- Stars: 17
- Watchers: 2
- Forks: 2
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# rapid-draughts ⚡
[](https://badge.fury.io/js/rapid-draughts)


[](https://packagequality.com/#?package=rapid-draughts)


A *super speedy, blazing fast, rocket-powered* TypeScript draughts/checkers engine with move validation, AI and game history.
It uses bitboards, a board representation that holds the draughts board in three 32 or 64 bit unsigned integers. One for the light pieces, dark pieces and the king pieces. Bitboards enable fast move generation and have minimal memory usage.
The english draughts / american checkers engine follows the [WCDF ruleset](https://www.wcdf.net/rules.htm).
## Installing
Run the following command inside your node project:
```bash
npm install rapid-draughts
```
## How To Use
```typescript
import { DraughtsPlayer, DraughtsStatus } from 'rapid-draughts';
import {
EnglishDraughts as Draughts,
EnglishDraughtsComputerFactory as ComputerFactory,
} from 'rapid-draughts/english';
// Initialise the game
const draughts = Draughts.setup();
// Show the available moves and play one.
console.table(draughts.moves);
draughts.move(draughts.moves[0]);
// Initialise two computer players
const weakComputer = ComputerFactory.random();
const strongComputer = ComputerFactory.alphaBeta({
maxDepth: 7,
});
// Play with the AIs until there is a winner
while (draughts.status === DraughtsStatus.PLAYING) {
console.log(`${draughts.asciiBoard()}`);
console.log(`to_move = ${draughts.player}`);
const computerPlayer =
draughts.player === DraughtsPlayer.LIGHT ? weakComputer : strongComputer;
const move = await computerPlayer(draughts);
if (move) draughts.move(move);
}
// Announce the winner
console.log(`${draughts.asciiBoard()}`);
console.log(`status = ${draughts.status}`);
console.log(`ended after ${draughts.history.moves.length} moves`);
```
## Online Demo
rapid-draughts powers the draughts game site [draughts.org](https://draughts.org/). Check it out!