Skip to content

A library for legal chess move generation, maintenance of game state, and format conversion.

License

Notifications You must be signed in to change notification settings

alexobviously/chess960.dart

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chess960.dart

This package should be considered deprecated. Try using Bishop instead.

chess960.dart is based on chess.dart, with some light modifications to adapt it to Chess 960 rules.

It handles legal chess move generation, maintenance of chess game state, and conversion to and from the FEN and PGN formats. It has no external dependencies.

A Random Game

import "package:chess960/chess960.dart";

void main() {
  Chess960 chess = new Chess960();
  while (!chess.game_over) {
    print('position: ' + chess.fen);
    print(chess.ascii);
    var moves = chess.moves();
    moves.shuffle();
    var move = moves[0];
    chess.move(move);
    print('move: ' + move);
  }
}

Documentation

The chess.js documentation is largely relevant, but see also the docs on pub.dev

Versioning

Dart 2 is required.

Testing

The test directory contains tests.dart which is a port of chess.js's unit tests. The program random.dart plays a random game of chess. ai.dart is an example of a simple 4 ply alpha beta search for black (yes a simple chess-playing program) that uses a purely material evaluation function (it is rather slow). You can run the unit tests using pub:

pub get
pub run test/tests.dart

And you can also run performance tests.

pub run test/perft.dart

And, finally you can run the simple AI:

dart test/ai.dart

Links

About

A library for legal chess move generation, maintenance of game state, and format conversion.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Dart 100.0%