Exemple #1
0
 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);
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        // 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);
        }