private void AssignFirstZobristKey() { var side = (int)board.Side == 1 ? 0 : 1; foreach (var piece in board.GetPieces()) { zobristKey ^= pieces[side, piece.ToInt, piece.From.Rank, piece.From.File]; } zobristKey ^= whiteCastle[(int)board.WhiteCastle]; zobristKey ^= blackCastle[(int)board.BlackCastle]; zobristKey ^= enPassant[board.EnPassantSquare.Rank, board.EnPassantSquare.File]; zobristKey ^= this.side; }
public static int Evaluate(Board board) { return((int)board.Side * board.GetPieces().Sum(p => p.Evaluation())); }