xchess
Version:
Chess Engine
69 lines (58 loc) • 1.35 kB
JavaScript
export {DeadPositionTest, CheckmateChanceTest}
import {King, Queen, Bishop, Rook, Knight, Pawn} from './standart-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);
}