UNPKG

xchess

Version:

Chess Engine

69 lines (58 loc) 1.34 kB
export {DeadPositionTest, CheckmateChanceTest} import {King, Queen, Bishop, Rook, Knight, Pawn} from './piece.js' import {Color} from './color.js' function CheckmateChanceTest(context, color){ return true; } function DeadPositionTest(board){ let WhiteKing = null; let BlackKing = null; let WhiteBishop = null; let BlackBishop = null; let AnyKnight = null; function KingTest(king){ if(Color.isWhite(king.color)){ if(WhiteKing) return false; WhiteKing = king; return true; } if(BlackKing) return false; BlackKing = king; return true; } function BishopTest(bishop, color){ if(AnyKnight) return false; if(Color.isWhite(bishop.color)){ if(WhiteBishop) return WhiteBishop.eq(color); WhiteBishop = color; return true; } if(BlackBishop) return BlackBishop.eq(color); BlackBishop = color; return true; } function KnightTest(knight){ if(AnyKnight || WhiteBishop || BlackBishop) return false; AnyKnight = knight; return true; } function Test(piece, color){ if(King.is(piece)) return KingTest(piece); if(Knight.is(piece)) return KnightTest(piece); if(Bishop.is(piece)) return BishopTest(piece, color); return false; } for(const [square, piece] of board) if(!Test(piece, square.color)) return false; return Boolean(WhiteKing && BlackKing); }