55 lines
1.4 KiB
Dart
55 lines
1.4 KiB
Dart
import "package:meta/meta.dart";
|
|
|
|
@immutable
|
|
class Piece {
|
|
// Private constructor to prevent instantiation.
|
|
Piece._();
|
|
|
|
static const emptySquare = 0;
|
|
static const whiteKing = 1;
|
|
static const whiteQueen = 2;
|
|
static const whiteRook = 3;
|
|
static const whiteBishop = 4;
|
|
static const whiteKnight = 5;
|
|
static const whitePawn = 6;
|
|
static const blackKing = 7;
|
|
static const blackQueen = 8;
|
|
static const blackRook = 9;
|
|
static const blackBishop = 10;
|
|
static const blackKnight = 11;
|
|
static const blackPawn = 12;
|
|
|
|
static const Map<String, int> pieceByFenCharacter = {
|
|
"k": blackKing,
|
|
"q": blackQueen,
|
|
"r": blackRook,
|
|
"b": blackBishop,
|
|
"n": blackKnight,
|
|
"p": blackPawn,
|
|
"K": whiteKing,
|
|
"Q": whiteQueen,
|
|
"R": whiteRook,
|
|
"B": whiteBishop,
|
|
"N": whiteKnight,
|
|
"P": whitePawn,
|
|
};
|
|
|
|
static const Map<int, String> fenCharacterByPiece = <int, String>{
|
|
Piece.emptySquare: " ",
|
|
Piece.blackKing : "k",
|
|
Piece.blackQueen : "q",
|
|
Piece.blackRook : "r",
|
|
Piece.blackBishop: "b",
|
|
Piece.blackKnight: "n",
|
|
Piece.blackPawn : "p",
|
|
Piece.whiteKing : "K",
|
|
Piece.whiteQueen : "Q",
|
|
Piece.whiteRook : "R",
|
|
Piece.whiteBishop: "B",
|
|
Piece.whiteKnight: "N",
|
|
Piece.whitePawn : "P",
|
|
};
|
|
|
|
static bool isWhite(int piece) => piece >= whiteKing && piece <= whitePawn;
|
|
static bool isBlack(int piece) => piece >= blackKing && piece <= blackPawn;
|
|
} |