public void SetPieceAtSquare(int index, EChessTeam team, EPieceType piece) { BitBoard.BitBoardIndex tmpIndex = bitBoard.GetBitBoardIndex(team, piece); if (tmpIndex != BitBoard.BitBoardIndex.NONE) { bitBoard.SetBitValue(tmpIndex, index, true); } bitBoard.SetBitValue(BitBoard.BitBoardIndex.FREE_CASE, index, false); bitBoard.SetBitValue(BitBoard.BitBoardIndex.OCCUPED_CASE, index, true); }
public bool DoesTeamLoseForCustomBoard(EChessTeam team, BoardState tmpBoard) { BitBoard.BitBoardIndex index = tmpBoard.bitBoard.EPieceTypeToBitBoardIndex(EPieceType.King, team); int idx = 0; int iterator = 0; tmpBoard.bitBoard.FindFirstSetBit(tmpBoard.bitBoard.GetBitBoard(index), ref idx, ref iterator); if (idx != -1) { return(false); } return(true); }
// approximation : opponent king must be "eaten" to win instead of detecting checkmate state public bool DoesTeamLose(EChessTeam team) { BitBoard.BitBoardIndex index = bitBoard.EPieceTypeToBitBoardIndex(EPieceType.King, team); int idx = 0; int iterator = 0; bitBoard.FindFirstSetBit(bitBoard.GetBitBoard(index), ref idx, ref iterator); if (idx != -1) { return(false); } return(true); }