chess-legal-moves
Version:
Analyses a given chess game position in Fen notation to return legal moves and provides the next game position after a given move
45 lines (44 loc) • 1.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createNewGameScan = exports.generate = void 0;
var Board_1 = require("./Board/Board");
var knightsMoves_1 = require("./moves/knightsMoves");
var pawnsMoves_1 = require("./moves/pawnsMoves");
var rooksMoves_1 = require("./moves/rooksMoves");
var bishopsMoves_1 = require("./moves/bishopsMoves");
var queensMoves_1 = require("./moves/queensMoves");
var kingMoves_1 = require("./moves/kingMoves");
exports.generate = {
knightsMoves: knightsMoves_1.knightsMoves,
pawnsMoves: pawnsMoves_1.pawnsMoves,
rooksMoves: rooksMoves_1.rooksMoves,
bishopsMoves: bishopsMoves_1.bishopsMoves,
queensMoves: queensMoves_1.queensMoves,
kingMoves: kingMoves_1.kingMoves,
};
function createNewGameScan(gameState) {
var _a, _b, _c, _d, _e, _f;
var scan = {
legalMoves: [],
kingState: {
isChecked: false,
isCheckMated: false,
isDraw: false,
},
};
var board = new Board_1.default(gameState.fenBoard);
if (board.whiteKnights)
(_a = scan.legalMoves).push.apply(_a, exports.generate.knightsMoves(board, gameState.hasToPlay));
if (board.whitePawns)
(_b = scan.legalMoves).push.apply(_b, exports.generate.pawnsMoves(board, gameState.hasToPlay));
if (board.whiteRooks)
(_c = scan.legalMoves).push.apply(_c, exports.generate.rooksMoves(board, gameState.hasToPlay));
if (board.whiteBishops)
(_d = scan.legalMoves).push.apply(_d, exports.generate.bishopsMoves(board, gameState.hasToPlay));
if (board.whiteQueens)
(_e = scan.legalMoves).push.apply(_e, exports.generate.queensMoves(board, gameState.hasToPlay));
if (board.whiteKing)
(_f = scan.legalMoves).push.apply(_f, exports.generate.kingMoves(board, gameState.hasToPlay));
return scan;
}
exports.createNewGameScan = createNewGameScan;