omnichess/lib/constants/piece.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;
}