UNPKG

chlss

Version:

Open-Source Chess Engine in TypeScript.

72 lines (71 loc) 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BoardObj = void 0; const fen_1 = require("./fen"); const board_1 = require("./board"); const moveGenerator_1 = require("./moveGenerator"); const moveMaker_1 = require("./moveMaker"); const uci_1 = require("./uci"); const termination_1 = require("./termination"); const colour_1 = require("./colour"); class BoardObj { constructor(fen = undefined) { this.board = board_1.Board.createEmpty(); if (fen) { this.fen(fen); } } fen(setFen = undefined) { if (!setFen) return fen_1.FEN.writeFEN(this.board); fen_1.FEN.loadFEN(setFen, this.board); return setFen; } pose() { return this.board.position; } pushUci(uci) { const legalMoves = this.legalMoves(); const move = uci_1.UCI.parse(uci, legalMoves, this.board.position); this.push(move); } legalMoves() { return moveGenerator_1.MoveGenerator.generateLegalMoves(this.board, this.board.toMove); } legalMovesUci() { const moves = this.legalMoves(); const r = []; for (const move of moves) { if (move.isPromo) { move.promotion = "knight"; r.push(uci_1.UCI.write(move)); move.promotion = "rook"; r.push(uci_1.UCI.write(move)); move.promotion = "queen"; r.push(uci_1.UCI.write(move)); move.promotion = "bishop"; r.push(uci_1.UCI.write(move)); move.promotion = undefined; } else { const uci = uci_1.UCI.write(move); r.push(uci); } } return r; } push(move) { return moveMaker_1.MoveMaker.makeMove(this.board, move); } getEnemyMoves() { return moveGenerator_1.MoveGenerator.generateLegalMoves(this.board, colour_1.Colours.inverseColour(this.board.toMove)); } getTermination() { const legalMoves = this.legalMoves(); return termination_1.TerminationApi.getTermination(this.board, legalMoves, this.getEnemyMoves()); } getColour() { return this.board.toMove; } } exports.BoardObj = BoardObj;