public void Initialize_IsBlackCorrectPlaced_Equal() { ulong correctPlacement = 0x4200000000000000; KnightBitBoard board = new KnightBitBoard(ChessPieceColors.Black); board.Initialize(null); Assert.Equal(correctPlacement, (ulong)board.Bits); }
public void Undo_WhiteKnightCapture_Equal() { ChessBoard testBoard = new ChessBoard(); testBoard.InitializeGame(); KnightBitBoard move1 = new KnightBitBoard(ChessPieceColors.White); move1.Bits = (testBoard.WhiteKnight.Bits ^ BoardSquare.G1) | BoardSquare.F3; PawnBitBoard move2 = new PawnBitBoard(ChessPieceColors.Black); move2.Bits = (testBoard.BlackPawn.Bits ^ BoardSquare.B7) | BoardSquare.B6; KnightBitBoard move3 = new KnightBitBoard(ChessPieceColors.White); move3.Bits = (move1.Bits ^ BoardSquare.F3) | BoardSquare.G5; PawnBitBoard move4 = new PawnBitBoard(ChessPieceColors.Black); move4.Bits = (move2.Bits ^ BoardSquare.B6) | BoardSquare.B5; KnightBitBoard move5 = new KnightBitBoard(ChessPieceColors.White); move5.Bits = (move3.Bits ^ BoardSquare.G5) | BoardSquare.F7; ulong expectedHash = testBoard.BoardHash.Key; testBoard.Update(move1); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move1); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move2); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move2); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move3); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move3); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move4); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move4); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move5); testBoard.Undo(); ulong testHash = testBoard.BoardHash.Key; Assert.Equal(expectedHash, testHash); }
public void ConvertBitBoardMoveToString_IsCorrectStringReturned_Equals() { ChessBoard chessBoard = new ChessBoard(); chessBoard.WhiteKnight.Bits = BoardSquare.B8 | BoardSquare.G8; ColoredBitBoard toCoordinate = new KnightBitBoard(ChessPieceColors.White); toCoordinate.Bits = BoardSquare.C6 | BoardSquare.G8; string correctMoveString = "b8c6"; StringBitboardConverter converter = new StringBitboardConverter(chessBoard, ChessPieceColors.White); Assert.Equal(correctMoveString, converter.ConvertBitBoardMoveToString(toCoordinate)); }
public void Undo_WhiteKnightRight_Equal() { ChessBoard testBoard = new ChessBoard(); testBoard.InitializeGame(); KnightBitBoard move1 = new KnightBitBoard(ChessPieceColors.White); move1.Bits = (testBoard.WhiteKnight.Bits ^ BoardSquare.B1) | BoardSquare.C3; ulong expectedHash = testBoard.BoardHash.Key; testBoard.Update(move1); testBoard.Undo(); ulong testHash = testBoard.BoardHash.Key; Assert.Equal(expectedHash, testHash); }
private static KnightBitBoard ComputeBlackKnight(ChessBoard inputChessBoard, BitBoard inputKnightBB, BitBoard blackPieces, BitBoard whitePieces, BitBoard allPieces) { KnightBitBoard result = new KnightBitBoard(ChessPieceColors.Black); EmptyBitBoard spot1_clip = new EmptyBitBoard(); EmptyBitBoard spot2_clip = new EmptyBitBoard(); EmptyBitBoard spot3_clip = new EmptyBitBoard(); EmptyBitBoard spot4_clip = new EmptyBitBoard(); EmptyBitBoard spot5_clip = new EmptyBitBoard(); EmptyBitBoard spot6_clip = new EmptyBitBoard(); EmptyBitBoard spot7_clip = new EmptyBitBoard(); EmptyBitBoard spot8_clip = new EmptyBitBoard(); EmptyBitBoard spot1 = new EmptyBitBoard(); EmptyBitBoard spot2 = new EmptyBitBoard(); EmptyBitBoard spot3 = new EmptyBitBoard(); EmptyBitBoard spot4 = new EmptyBitBoard(); EmptyBitBoard spot5 = new EmptyBitBoard(); EmptyBitBoard spot6 = new EmptyBitBoard(); EmptyBitBoard spot7 = new EmptyBitBoard(); EmptyBitBoard spot8 = new EmptyBitBoard(); spot1_clip.Bits = (BoardSquare)((ulong)inputKnightBB.Bits & ~MoveGenUtils.FILE_A); spot2_clip.Bits = (BoardSquare)((ulong)inputKnightBB.Bits & ~MoveGenUtils.FILE_H); spot3_clip.Bits = (BoardSquare)((ulong)inputKnightBB.Bits & ~MoveGenUtils.FILE_G & ~MoveGenUtils.FILE_H); spot4_clip.Bits = (BoardSquare)((ulong)inputKnightBB.Bits & ~MoveGenUtils.FILE_G & ~MoveGenUtils.FILE_H); spot5_clip.Bits = (BoardSquare)((ulong)inputKnightBB.Bits & ~MoveGenUtils.FILE_H); spot6_clip.Bits = (BoardSquare)((ulong)inputKnightBB.Bits & ~MoveGenUtils.FILE_A); spot7_clip.Bits = (BoardSquare)((ulong)inputKnightBB.Bits & ~MoveGenUtils.FILE_A & ~MoveGenUtils.FILE_B); spot8_clip.Bits = (BoardSquare)((ulong)inputKnightBB.Bits & ~MoveGenUtils.FILE_A & ~MoveGenUtils.FILE_B); spot1.Bits = (BoardSquare)((ulong)spot1_clip.Bits << 17); spot2.Bits = (BoardSquare)((ulong)spot2_clip.Bits << 15); spot3.Bits = (BoardSquare)((ulong)spot3_clip.Bits << 6); spot4.Bits = (BoardSquare)((ulong)spot4_clip.Bits >> 10); spot5.Bits = (BoardSquare)((ulong)spot5_clip.Bits >> 17); spot6.Bits = (BoardSquare)((ulong)spot6_clip.Bits >> 15); spot7.Bits = (BoardSquare)((ulong)spot7_clip.Bits >> 6); spot8.Bits = (BoardSquare)((ulong)spot8_clip.Bits << 10); result.Bits = spot1.Bits | spot2.Bits | spot3.Bits | spot4.Bits | spot5.Bits | spot6.Bits | spot7.Bits | spot8.Bits; result.Bits = result.Bits & ~blackPieces.Bits; return(result); }
public static List <KnightBitBoard> KnightBitBoardResults(ChessBoard inputChessBoard, ChessPieceColors color, BitBoard blackPieces, BitBoard whitePieces, BitBoard allPieces) { List <KnightBitBoard> result = new List <KnightBitBoard>(); List <Tuple <KnightBitBoard, KnightBitBoard> > legalKnightMoves = new List <Tuple <KnightBitBoard, KnightBitBoard> >(); List <KnightBitBoard> sepKnightsInput = new List <KnightBitBoard>(); List <KnightBitBoard> sepKnightsOutput = new List <KnightBitBoard>(); if (color == ChessPieceColors.White) { sepKnightsInput = ColoredBitBoard.SplitBitBoard(inputChessBoard.WhiteKnight).ToList(); foreach (KnightBitBoard sepKnightBB in sepKnightsInput) { legalKnightMoves.Add(new Tuple <KnightBitBoard, KnightBitBoard>(sepKnightBB, ComputeWhiteKnight(inputChessBoard, sepKnightBB, blackPieces, whitePieces, allPieces))); } for (int i = 0; i < legalKnightMoves.Count; i++) { sepKnightsOutput = ColoredBitBoard.SplitBitBoard(legalKnightMoves[i].Item2).ToList(); foreach (KnightBitBoard sepKnightOutBB in sepKnightsOutput) { KnightBitBoard boardResult = new KnightBitBoard(color); boardResult.Bits = (inputChessBoard.WhiteKnight.Bits ^ legalKnightMoves[i].Item1.Bits) | sepKnightOutBB.Bits; result.Add(boardResult); } } } else { sepKnightsInput = ColoredBitBoard.SplitBitBoard(inputChessBoard.BlackKnight).ToList(); foreach (KnightBitBoard sepKnightBB in sepKnightsInput) { legalKnightMoves.Add(new Tuple <KnightBitBoard, KnightBitBoard>(sepKnightBB, ComputeBlackKnight(inputChessBoard, sepKnightBB, blackPieces, whitePieces, allPieces))); } for (int i = 0; i < legalKnightMoves.Count; i++) { sepKnightsOutput = ColoredBitBoard.SplitBitBoard(legalKnightMoves[i].Item2).ToList(); foreach (KnightBitBoard sepKnightOutBB in sepKnightsOutput) { KnightBitBoard boardResult = new KnightBitBoard(color); boardResult.Bits = (inputChessBoard.BlackKnight.Bits ^ legalKnightMoves[i].Item1.Bits) | sepKnightOutBB.Bits; result.Add(boardResult); } } } return(result); }
public void ConvertStringMoveToBitBoard_IsCorrectBitBoardReturned_Equals() { ChessBoard chessBoard = new ChessBoard(); chessBoard.BlackKnight.Bits = BoardSquare.B8 | BoardSquare.G8; string stringMove = "b8c6"; StringBitboardConverter converter = new StringBitboardConverter(chessBoard, ChessPieceColors.Black); ColoredBitBoard currentMoveBitBoard = converter.ConvertStringMoveToBitBoard(stringMove); ColoredBitBoard correctMoveBitBoard = new KnightBitBoard(ChessPieceColors.Black); correctMoveBitBoard.Bits = BoardSquare.C6 | BoardSquare.G8; Assert.Equal(currentMoveBitBoard.GetType(), correctMoveBitBoard.GetType()); Assert.Equal(currentMoveBitBoard.Bits, correctMoveBitBoard.Bits); }
public void Undo_BlackKnightCapture_Equal() { ChessBoard testBoard = new ChessBoard(); testBoard.InitializeGame(); PawnBitBoard move1 = new PawnBitBoard(ChessPieceColors.White); move1.Bits = (testBoard.WhitePawn.Bits ^ BoardSquare.G2) | BoardSquare.G3; KnightBitBoard move2 = new KnightBitBoard(ChessPieceColors.Black); move2.Bits = (testBoard.BlackKnight.Bits ^ BoardSquare.B8) | BoardSquare.A6; PawnBitBoard move3 = new PawnBitBoard(ChessPieceColors.White); move3.Bits = (move1.Bits ^ BoardSquare.G3) | BoardSquare.G4; KnightBitBoard move4 = new KnightBitBoard(ChessPieceColors.Black); move4.Bits = (move2.Bits ^ BoardSquare.A6) | BoardSquare.B4; PawnBitBoard move5 = new PawnBitBoard(ChessPieceColors.White); move5.Bits = (move3.Bits ^ BoardSquare.G4) | BoardSquare.G5; KnightBitBoard move6 = new KnightBitBoard(ChessPieceColors.Black); move6.Bits = (move4.Bits ^ BoardSquare.B4) | BoardSquare.A2; ulong expectedHash = testBoard.BoardHash.Key; testBoard.Update(move1); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move1); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move2); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move2); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move3); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move3); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move4); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move4); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move5); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move5); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move6); testBoard.Undo(); ulong testHash = testBoard.BoardHash.Key; Assert.Equal(expectedHash, testHash); }
public void Undo_BlackPromotionQueen_Equal() { ChessBoard testBoard = new ChessBoard(); testBoard.InitializeGame(); PawnBitBoard move1 = new PawnBitBoard(ChessPieceColors.White); move1.Bits = (testBoard.WhitePawn.Bits ^ BoardSquare.G2) | BoardSquare.G4; PawnBitBoard move2 = new PawnBitBoard(ChessPieceColors.Black); move2.Bits = (testBoard.BlackPawn.Bits ^ BoardSquare.H7) | BoardSquare.H5; PawnBitBoard move3 = new PawnBitBoard(ChessPieceColors.White); move3.Bits = (move1.Bits ^ BoardSquare.H2) | BoardSquare.H3; PawnBitBoard move4 = new PawnBitBoard(ChessPieceColors.Black); move4.Bits = (move2.Bits ^ BoardSquare.H5) | BoardSquare.G4; KnightBitBoard move5 = new KnightBitBoard(ChessPieceColors.White); move5.Bits = (testBoard.WhiteKnight.Bits ^ BoardSquare.G1) | BoardSquare.H3; //PawnBitBoard move4 = new PawnBitBoard( ChessPieceColors.Black ); //move4.Bits = ( move2.Bits ^ BoardSquare.G5 ) | BoardSquare.H4; PawnBitBoard move6 = new PawnBitBoard(ChessPieceColors.Black); move6.Bits = (move4.Bits ^ BoardSquare.G4) | BoardSquare.G3; KnightBitBoard move7 = new KnightBitBoard(ChessPieceColors.White); move7.Bits = (move5.Bits ^ BoardSquare.H3) | BoardSquare.G1; PawnBitBoard move8 = new PawnBitBoard(ChessPieceColors.Black); move8.Bits = (move6.Bits ^ BoardSquare.G3) | BoardSquare.G2; KnightBitBoard move9 = new KnightBitBoard(ChessPieceColors.White); move9.Bits = (move7.Bits ^ BoardSquare.G1) | BoardSquare.H3; PawnBitBoard move10 = new PawnBitBoard(ChessPieceColors.Black); move10.Bits = (move8.Bits ^ BoardSquare.G2) | BoardSquare.G1; move10.Promote(PawnBitBoard.PromotionPiece.Queen); testBoard.Update(move1); testBoard.Update(move2); testBoard.Update(move3); testBoard.Update(move4); testBoard.Update(move5); testBoard.Update(move6); testBoard.Update(move7); testBoard.Update(move8); testBoard.Update(move9); ulong expectedKey = testBoard.BoardHash.Key; testBoard.Update(move10); testBoard.Undo(); ulong testHash = testBoard.BoardHash.Key; Assert.Equal(expectedKey, testHash); }
private static void sacrificeQueenDebugStuffSomethingTestMethod() { //Winboard winboard = new Winboard(); ChessBoard lolBoard = new ChessBoard(); lolBoard.InitializeGame(); //White PawnBitBoard pawnWhite = new PawnBitBoard(ChessPieceColors.White); pawnWhite.Bits = BoardSquare.A4 | BoardSquare.C2 | BoardSquare.D3 | BoardSquare.E4 | BoardSquare.F2 | BoardSquare.G2; BishopBitBoard bishopWhite = new BishopBitBoard(ChessPieceColors.White); bishopWhite.Bits = BoardSquare.E2 | BoardSquare.H4; KingBitBoard kingWhite = new KingBitBoard(ChessPieceColors.White); kingWhite.Bits = BoardSquare.E1; RookBitBoard rookWhite = new RookBitBoard(ChessPieceColors.White); rookWhite.Bits = BoardSquare.B1 | BoardSquare.H1; KnightBitBoard knightWhite = new KnightBitBoard(ChessPieceColors.White); knightWhite.Bits = BoardSquare.D2; QueenBitBoard queenWhite = new QueenBitBoard(ChessPieceColors.White); queenWhite.Bits = BoardSquare.D1; //Black PawnBitBoard pawnBlack = new PawnBitBoard(ChessPieceColors.Black); pawnBlack.Bits = BoardSquare.A7 | BoardSquare.B7 | BoardSquare.C5 | BoardSquare.E5 | BoardSquare.H5; RookBitBoard rookBlack = new RookBitBoard(ChessPieceColors.Black); rookBlack.Bits = BoardSquare.A8 | BoardSquare.H7; BishopBitBoard bishopBlack = new BishopBitBoard(ChessPieceColors.Black); bishopBlack.Bits = BoardSquare.C8 | BoardSquare.F8; QueenBitBoard queenBlack = new QueenBitBoard(ChessPieceColors.Black); queenBlack.Bits = BoardSquare.B4; KingBitBoard kingBlack = new KingBitBoard(ChessPieceColors.Black); kingBlack.Bits = BoardSquare.F7; KnightBitBoard knightBlack = new KnightBitBoard(ChessPieceColors.Black); knightBlack.Bits = BoardSquare.B8; //RookBitBoard badMove = new RookBitBoard( ChessPieceColors.Black ); //badMove.Bits = BoardSquare.B8; lolBoard.Update(pawnWhite); lolBoard.Update(knightWhite); lolBoard.Update(queenWhite); lolBoard.Update(rookWhite); lolBoard.Update(bishopWhite); lolBoard.Update(kingWhite); lolBoard.Update(pawnBlack); lolBoard.Update(rookBlack); lolBoard.Update(bishopBlack); lolBoard.Update(queenBlack); lolBoard.Update(kingBlack); lolBoard.Update(knightBlack); List <ColoredBitBoard> legalMoves = new List <ColoredBitBoard>(); legalMoves = MoveGen.GenerateLegalMoves(lolBoard, ChessPieceColors.Black); ColoredBitBoard bestMove = NegaMax.GetBestMove(lolBoard, 3, ChessPieceColors.Black, MoveGen.GenerateLegalMoves, Eval.EvaluateState); Console.Write(legalMoves.ToString() + bestMove.ToString()); }
private static void blackqueensidecastle() { //Winboard winboard = new Winboard(); ChessBoard lolBoard = new ChessBoard(); lolBoard.InitializeGame(); //White PawnBitBoard pawnWhite = new PawnBitBoard(ChessPieceColors.White); pawnWhite.Bits = BoardSquare.A2 | BoardSquare.B2 | BoardSquare.C2 | BoardSquare.D2 | BoardSquare.E4 | BoardSquare.H3; BishopBitBoard bishopWhite = new BishopBitBoard(ChessPieceColors.White); bishopWhite.Bits = BoardSquare.C1; KingBitBoard kingWhite = new KingBitBoard(ChessPieceColors.White); kingWhite.Bits = BoardSquare.D3; RookBitBoard rookWhite = new RookBitBoard(ChessPieceColors.White); rookWhite.Bits = BoardSquare.A1 | BoardSquare.H1; KnightBitBoard knightWhite = new KnightBitBoard(ChessPieceColors.White); knightWhite.Bits = BoardSquare.D2; QueenBitBoard queenWhite = new QueenBitBoard(ChessPieceColors.White); queenWhite.Bits = BoardSquare.D1; //Black PawnBitBoard pawnBlack = new PawnBitBoard(ChessPieceColors.Black); pawnBlack.Bits = BoardSquare.A7 | BoardSquare.B7 | BoardSquare.C7 | BoardSquare.C6 | BoardSquare.F7 | BoardSquare.G7 | BoardSquare.H7; RookBitBoard rookBlack = new RookBitBoard(ChessPieceColors.Black); rookBlack.Bits = BoardSquare.A8 | BoardSquare.H8; BishopBitBoard bishopBlack = new BishopBitBoard(ChessPieceColors.Black); bishopBlack.Bits = BoardSquare.F5 | BoardSquare.H4; QueenBitBoard queenBlack = new QueenBitBoard(ChessPieceColors.Black); queenBlack.Bits = BoardSquare.F2; KingBitBoard kingBlack = new KingBitBoard(ChessPieceColors.Black); kingBlack.Bits = BoardSquare.E8; KnightBitBoard knightBlack = new KnightBitBoard(ChessPieceColors.Black); knightBlack.Bits = BoardSquare.H6; //RookBitBoard badMove = new RookBitBoard( ChessPieceColors.Black ); //badMove.Bits = BoardSquare.B8; lolBoard.Update(pawnWhite); lolBoard.Update(knightWhite); lolBoard.Update(queenWhite); lolBoard.Update(rookWhite); lolBoard.Update(bishopWhite); lolBoard.Update(kingWhite); lolBoard.Update(pawnBlack); lolBoard.Update(rookBlack); lolBoard.Update(bishopBlack); lolBoard.Update(queenBlack); lolBoard.Update(kingBlack); lolBoard.Update(knightBlack); KingBitBoard test = new KingBitBoard(ChessPieceColors.Black); test.Bits = BoardSquare.C8; lolBoard.Update(test); List <ColoredBitBoard> legalMoves = new List <ColoredBitBoard>(); legalMoves = MoveGen.GenerateLegalMoves(lolBoard, ChessPieceColors.Black); ColoredBitBoard bestMove = NegaMax.GetBestMove(lolBoard, 3, ChessPieceColors.White, MoveGen.GenerateLegalMoves, Eval.EvaluateState); Console.Write(legalMoves.ToString() + bestMove.ToString()); }
public void Undo_BlackKingQueenSideCastling_Equal() { ChessBoard testBoard = new ChessBoard(); testBoard.InitializeGame(); PawnBitBoard move1 = new PawnBitBoard(ChessPieceColors.White); move1.Bits = (testBoard.WhitePawn.Bits ^ BoardSquare.H2) | BoardSquare.H3; KnightBitBoard move2 = new KnightBitBoard(ChessPieceColors.Black); move2.Bits = (testBoard.BlackKnight.Bits ^ BoardSquare.B8) | BoardSquare.C6; PawnBitBoard move3 = new PawnBitBoard(ChessPieceColors.White); move3.Bits = (move1.Bits ^ BoardSquare.H3) | BoardSquare.H4; PawnBitBoard move4 = new PawnBitBoard(ChessPieceColors.Black); move4.Bits = (testBoard.BlackPawn.Bits ^ BoardSquare.B7) | BoardSquare.B6; PawnBitBoard move5 = new PawnBitBoard(ChessPieceColors.White); move5.Bits = (move3.Bits ^ BoardSquare.H4) | BoardSquare.H5; BishopBitBoard move6 = new BishopBitBoard(ChessPieceColors.Black); move6.Bits = (testBoard.BlackBishop.Bits ^ BoardSquare.C8) | BoardSquare.A6; PawnBitBoard move7 = new PawnBitBoard(ChessPieceColors.White); move7.Bits = (move5.Bits ^ BoardSquare.H5) | BoardSquare.H6; QueenBitBoard move8 = new QueenBitBoard(ChessPieceColors.Black); move8.Bits = (testBoard.BlackQueen.Bits ^ BoardSquare.D8) | BoardSquare.B8; PawnBitBoard move9 = new PawnBitBoard(ChessPieceColors.White); move9.Bits = (move7.Bits ^ BoardSquare.G2) | BoardSquare.G3; QueenBitBoard move10 = new QueenBitBoard(ChessPieceColors.Black); move10.Bits = (move8.Bits ^ BoardSquare.B8) | BoardSquare.B7; PawnBitBoard move11 = new PawnBitBoard(ChessPieceColors.White); move11.Bits = (move9.Bits ^ BoardSquare.G3) | BoardSquare.G4; KingBitBoard move12 = new KingBitBoard(ChessPieceColors.Black); move12.Bits = (testBoard.BlackKing.Bits ^ BoardSquare.E8) | BoardSquare.C8; ulong expectedHash = testBoard.BoardHash.Key; testBoard.Update(move1); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move1); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move2); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move2); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move3); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move3); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move4); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move4); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move5); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move5); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move6); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move6); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move7); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move7); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move8); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move8); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move9); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move9); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move10); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move10); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move11); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move11); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move12); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); }
private static void f3d5failmove() { //Winboard winboard = new Winboard(); ChessBoard lolBoard = new ChessBoard(); lolBoard.InitializeGame(); //White PawnBitBoard pawnWhite = new PawnBitBoard(ChessPieceColors.White); pawnWhite.Bits = BoardSquare.A3 | BoardSquare.B3 | BoardSquare.C3 | BoardSquare.D3 | BoardSquare.H4; BishopBitBoard bishopWhite = new BishopBitBoard(ChessPieceColors.White); bishopWhite.Bits = BoardSquare.C1; KingBitBoard kingWhite = new KingBitBoard(ChessPieceColors.White); kingWhite.Bits = BoardSquare.F2; RookBitBoard rookWhite = new RookBitBoard(ChessPieceColors.White); rookWhite.Bits = BoardSquare.A1 | BoardSquare.H1; KnightBitBoard knightWhite = new KnightBitBoard(ChessPieceColors.White); knightWhite.Bits = BoardSquare.B1 | BoardSquare.G1; QueenBitBoard queenWhite = new QueenBitBoard(ChessPieceColors.White); queenWhite.Bits = BoardSquare.F3; //Black PawnBitBoard pawnBlack = new PawnBitBoard(ChessPieceColors.Black); pawnBlack.Bits = BoardSquare.A7 | BoardSquare.B7 | BoardSquare.C5 | BoardSquare.D7 | BoardSquare.G7 | BoardSquare.G4 | BoardSquare.H7; RookBitBoard rookBlack = new RookBitBoard(ChessPieceColors.Black); rookBlack.Bits = BoardSquare.A8 | BoardSquare.F8; BishopBitBoard bishopBlack = new BishopBitBoard(ChessPieceColors.Black); bishopBlack.Bits = BoardSquare.C8 | BoardSquare.D6; QueenBitBoard queenBlack = new QueenBitBoard(ChessPieceColors.Black); queenBlack.Bits = BoardSquare.G6; KingBitBoard kingBlack = new KingBitBoard(ChessPieceColors.Black); kingBlack.Bits = BoardSquare.G8; KnightBitBoard knightBlack = new KnightBitBoard(ChessPieceColors.Black); knightBlack.Bits = BoardSquare.D5; //RookBitBoard badMove = new RookBitBoard( ChessPieceColors.Black ); //badMove.Bits = BoardSquare.B8; lolBoard.Update(pawnWhite); lolBoard.Update(knightWhite); lolBoard.Update(queenWhite); lolBoard.Update(rookWhite); lolBoard.Update(bishopWhite); lolBoard.Update(kingWhite); lolBoard.Update(pawnBlack); lolBoard.Update(rookBlack); lolBoard.Update(bishopBlack); lolBoard.Update(queenBlack); lolBoard.Update(kingBlack); lolBoard.Update(knightBlack); ColoredBitBoard bestMove = NegaMax.GetBestMove(lolBoard, 3, ChessPieceColors.White, MoveGen.GenerateLegalMoves, Eval.EvaluateState); }
private static void anotherBlackQueenSideCastleFail() { ChessBoard lolBoard = new ChessBoard(); lolBoard.InitializeGame(); //White PawnBitBoard pawnWhite = new PawnBitBoard(ChessPieceColors.White); pawnWhite.Bits = BoardSquare.A2 | BoardSquare.C3 | BoardSquare.E3 | BoardSquare.H3; BishopBitBoard bishopWhite = new BishopBitBoard(ChessPieceColors.White); bishopWhite.Bits = 0; RookBitBoard rookWhite = new RookBitBoard(ChessPieceColors.White); rookWhite.Bits = BoardSquare.A1; KnightBitBoard knightWhite = new KnightBitBoard(ChessPieceColors.White); knightWhite.Bits = BoardSquare.B1; QueenBitBoard queenWhite = new QueenBitBoard(ChessPieceColors.White); queenWhite.Bits = BoardSquare.E2; KingBitBoard kingWhite = new KingBitBoard(ChessPieceColors.White); kingWhite.Bits = BoardSquare.D2; //black PawnBitBoard pawnBlack = new PawnBitBoard(ChessPieceColors.Black); pawnBlack.Bits = BoardSquare.A7 | BoardSquare.B7 | BoardSquare.C5 | BoardSquare.F7 | BoardSquare.G7 | BoardSquare.H5; BishopBitBoard bishopBlack = new BishopBitBoard(ChessPieceColors.Black); bishopBlack.Bits = BoardSquare.E4 | BoardSquare.F8; RookBitBoard rookBlack = new RookBitBoard(ChessPieceColors.Black); rookBlack.Bits = BoardSquare.A8 | BoardSquare.H8; KnightBitBoard knightBlack = new KnightBitBoard(ChessPieceColors.Black); knightBlack.Bits = BoardSquare.F4; QueenBitBoard queenBlack = new QueenBitBoard(ChessPieceColors.Black); queenBlack.Bits = BoardSquare.H3; KingBitBoard kingBlack = new KingBitBoard(ChessPieceColors.Black); kingBlack.Bits = BoardSquare.C8; //Update lolBoard.Update(pawnWhite); lolBoard.Update(knightWhite); lolBoard.Update(queenWhite); lolBoard.Update(rookWhite); lolBoard.Update(bishopWhite); lolBoard.Update(kingWhite); lolBoard.Update(pawnBlack); lolBoard.Update(rookBlack); lolBoard.Update(bishopBlack); lolBoard.Update(queenBlack); lolBoard.Update(kingBlack); lolBoard.Update(knightBlack); ColoredBitBoard bestMove = NegaMax.GetBestMove(lolBoard, 3, ChessPieceColors.White, MoveGen.GenerateLegalMoves, Eval.EvaluateState); }
private static void KingSideCastlingFAIL() { ChessBoard lolBoard = new ChessBoard(); lolBoard.InitializeGame(); //White PawnBitBoard pawnWhite = new PawnBitBoard(ChessPieceColors.White); pawnWhite.Bits = BoardSquare.A4 | BoardSquare.B4 | BoardSquare.C2 | BoardSquare.F4 | BoardSquare.H5; BishopBitBoard bishopWhite = new BishopBitBoard(ChessPieceColors.White); bishopWhite.Bits = BoardSquare.E3; RookBitBoard rookWhite = new RookBitBoard(ChessPieceColors.White); rookWhite.Bits = BoardSquare.C1 | BoardSquare.H1; KnightBitBoard knightWhite = new KnightBitBoard(ChessPieceColors.White); knightWhite.Bits = BoardSquare.G1; QueenBitBoard queenWhite = new QueenBitBoard(ChessPieceColors.White); queenWhite.Bits = 0; KingBitBoard kingWhite = new KingBitBoard(ChessPieceColors.White); kingWhite.Bits = BoardSquare.F2; //black PawnBitBoard pawnBlack = new PawnBitBoard(ChessPieceColors.Black); pawnBlack.Bits = BoardSquare.A7 | BoardSquare.B7 | BoardSquare.E7 | BoardSquare.E4 | BoardSquare.G4 | BoardSquare.G5 | BoardSquare.H7; BishopBitBoard bishopBlack = new BishopBitBoard(ChessPieceColors.Black); bishopBlack.Bits = BoardSquare.C3 | BoardSquare.C4; RookBitBoard rookBlack = new RookBitBoard(ChessPieceColors.Black); rookBlack.Bits = BoardSquare.A8 | BoardSquare.H8; KnightBitBoard knightBlack = new KnightBitBoard(ChessPieceColors.Black); knightBlack.Bits = BoardSquare.D4; QueenBitBoard queenBlack = new QueenBitBoard(ChessPieceColors.Black); queenBlack.Bits = 0; KingBitBoard kingBlack = new KingBitBoard(ChessPieceColors.Black); kingBlack.Bits = BoardSquare.G8; //Update lolBoard.Update(pawnWhite); lolBoard.Update(knightWhite); lolBoard.Update(queenWhite); lolBoard.Update(rookWhite); lolBoard.Update(bishopWhite); lolBoard.Update(kingWhite); lolBoard.Update(pawnBlack); lolBoard.Update(bishopBlack); lolBoard.Update(queenBlack); lolBoard.Update(knightBlack); lolBoard.Update(kingBlack); List <ColoredBitBoard> legalMoves = new List <ColoredBitBoard>(); legalMoves = MoveGen.GenerateLegalMoves(lolBoard, ChessPieceColors.White); ColoredBitBoard bestMove = NegaMax.GetBestMove(lolBoard, 3, ChessPieceColors.White, MoveGen.GenerateLegalMoves, Eval.EvaluateState); }
public void Undo_BlackKingKingSideCastling_Equal() { ChessBoard testBoard = new ChessBoard(); testBoard.InitializeGame(); PawnBitBoard move1 = new PawnBitBoard(ChessPieceColors.White); move1.Bits = (testBoard.WhitePawn.Bits ^ BoardSquare.A2) | BoardSquare.A3; KnightBitBoard move2 = new KnightBitBoard(ChessPieceColors.Black); move2.Bits = (testBoard.BlackKnight.Bits ^ BoardSquare.G8) | BoardSquare.F6; PawnBitBoard move3 = new PawnBitBoard(ChessPieceColors.White); move3.Bits = (move1.Bits ^ BoardSquare.A3) | BoardSquare.A4; PawnBitBoard move4 = new PawnBitBoard(ChessPieceColors.Black); move4.Bits = (testBoard.BlackPawn.Bits ^ BoardSquare.G7) | BoardSquare.G6; PawnBitBoard move5 = new PawnBitBoard(ChessPieceColors.White); move5.Bits = (move3.Bits ^ BoardSquare.A4) | BoardSquare.A5; BishopBitBoard move6 = new BishopBitBoard(ChessPieceColors.Black); move6.Bits = (testBoard.BlackBishop.Bits ^ BoardSquare.F8) | BoardSquare.G7; PawnBitBoard move7 = new PawnBitBoard(ChessPieceColors.White); move7.Bits = (move5.Bits ^ BoardSquare.A5) | BoardSquare.A6; KingBitBoard move8 = new KingBitBoard(ChessPieceColors.Black); move8.Bits = (testBoard.BlackKing.Bits ^ BoardSquare.E8) | BoardSquare.G8; ulong expectedHash = testBoard.BoardHash.Key; testBoard.Update(move1); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move1); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move2); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move2); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move3); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move3); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move4); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move4); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move5); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move5); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move6); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move6); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move7); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move7); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move8); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); }
public void Undo_WhiteKingQueenSideCastling_Equal() { ChessBoard testBoard = new ChessBoard(); testBoard.InitializeGame(); KnightBitBoard move1 = new KnightBitBoard(ChessPieceColors.White); move1.Bits = (testBoard.WhiteKnight.Bits ^ BoardSquare.B1) | BoardSquare.C3; PawnBitBoard move2 = new PawnBitBoard(ChessPieceColors.Black); move2.Bits = (testBoard.BlackPawn.Bits ^ BoardSquare.H7) | BoardSquare.H6; PawnBitBoard move3 = new PawnBitBoard(ChessPieceColors.White); move3.Bits = (testBoard.WhitePawn.Bits ^ BoardSquare.B2) | BoardSquare.B3; PawnBitBoard move4 = new PawnBitBoard(ChessPieceColors.Black); move4.Bits = (move2.Bits ^ BoardSquare.H6) | BoardSquare.H5; BishopBitBoard move5 = new BishopBitBoard(ChessPieceColors.White); move5.Bits = (testBoard.WhiteBishop.Bits ^ BoardSquare.C1) | BoardSquare.A3; PawnBitBoard move6 = new PawnBitBoard(ChessPieceColors.Black); move6.Bits = (move4.Bits ^ BoardSquare.H5) | BoardSquare.H4; QueenBitBoard move7 = new QueenBitBoard(ChessPieceColors.White); move7.Bits = (testBoard.WhiteQueen.Bits ^ BoardSquare.D1) | BoardSquare.B1; PawnBitBoard move8 = new PawnBitBoard(ChessPieceColors.Black); move8.Bits = (move6.Bits ^ BoardSquare.H4) | BoardSquare.H3; QueenBitBoard move9 = new QueenBitBoard(ChessPieceColors.White); move9.Bits = (move7.Bits ^ BoardSquare.B1) | BoardSquare.B2; PawnBitBoard move10 = new PawnBitBoard(ChessPieceColors.Black); move10.Bits = (move8.Bits ^ BoardSquare.G7) | BoardSquare.G5; KingBitBoard move11 = new KingBitBoard(ChessPieceColors.White); move11.Bits = (testBoard.WhiteKing.Bits ^ BoardSquare.E1) | BoardSquare.C1; ulong expectedHash = testBoard.BoardHash.Key; testBoard.Update(move1); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move1); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move2); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move2); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move3); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move3); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move4); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move4); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move5); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move5); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move6); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move6); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move7); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move7); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move8); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move8); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move9); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move9); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move10); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move10); expectedHash = testBoard.BoardHash.Key; expectedHash = testBoard.BoardHash.Key; testBoard.Update(move11); testBoard.Undo(); ulong testHash = testBoard.BoardHash.Key; Assert.Equal(expectedHash, testHash); }
public void Undo_WhiteKingKingSideCastling_Equal() { ChessBoard testBoard = new ChessBoard(); testBoard.InitializeGame(); KnightBitBoard move1 = new KnightBitBoard(ChessPieceColors.White); move1.Bits = (testBoard.WhiteKnight.Bits ^ BoardSquare.G1) | BoardSquare.F3; PawnBitBoard move2 = new PawnBitBoard(ChessPieceColors.Black); move2.Bits = (testBoard.BlackPawn.Bits ^ BoardSquare.A7) | BoardSquare.A6; PawnBitBoard move3 = new PawnBitBoard(ChessPieceColors.White); move3.Bits = (testBoard.WhitePawn.Bits ^ BoardSquare.G2) | BoardSquare.G3; PawnBitBoard move4 = new PawnBitBoard(ChessPieceColors.Black); move4.Bits = (move2.Bits ^ BoardSquare.A6) | BoardSquare.A5; BishopBitBoard move5 = new BishopBitBoard(ChessPieceColors.White); move5.Bits = (testBoard.WhiteBishop.Bits ^ BoardSquare.F1) | BoardSquare.G2; PawnBitBoard move6 = new PawnBitBoard(ChessPieceColors.Black); move6.Bits = (move4.Bits ^ BoardSquare.A5) | BoardSquare.A4; KingBitBoard move7 = new KingBitBoard(ChessPieceColors.White); move7.Bits = (testBoard.WhiteKing.Bits ^ BoardSquare.E1) | BoardSquare.G1; ulong expectedHash = testBoard.BoardHash.Key; testBoard.Update(move1); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move1); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move2); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move2); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move3); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move3); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move4); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move4); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move5); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move5); expectedHash = testBoard.BoardHash.Key; testBoard.Update(move6); testBoard.Undo(); Assert.Equal(expectedHash, testBoard.BoardHash.Key); testBoard.Update(move6); expectedHash = testBoard.BoardHash.Key; expectedHash = testBoard.BoardHash.Key; testBoard.Update(move7); testBoard.Undo(); ulong testHash = testBoard.BoardHash.Key; Assert.Equal(expectedHash, testHash); }
private static void anotherIllegalMoveFromMovegen() { //Winboard winboard = new Winboard(); ChessBoard lolBoard = new ChessBoard(); lolBoard.InitializeGame(); //White PawnBitBoard pawnWhite = new PawnBitBoard(ChessPieceColors.White); pawnWhite.Bits = BoardSquare.A3 | BoardSquare.C3 | BoardSquare.C4 | BoardSquare.F4 | BoardSquare.G4 | BoardSquare.H3; BishopBitBoard bishopWhite = new BishopBitBoard(ChessPieceColors.White); bishopWhite.Bits = 0; KingBitBoard kingWhite = new KingBitBoard(ChessPieceColors.White); kingWhite.Bits = BoardSquare.C2; RookBitBoard rookWhite = new RookBitBoard(ChessPieceColors.White); rookWhite.Bits = BoardSquare.A1 | BoardSquare.E2; KnightBitBoard knightWhite = new KnightBitBoard(ChessPieceColors.White); knightWhite.Bits = BoardSquare.B1; QueenBitBoard queenWhite = new QueenBitBoard(ChessPieceColors.White); queenWhite.Bits = 0; //Black PawnBitBoard pawnBlack = new PawnBitBoard(ChessPieceColors.Black); pawnBlack.Bits = BoardSquare.A7 | BoardSquare.B7 | BoardSquare.C6 | BoardSquare.E7 | BoardSquare.F7 | BoardSquare.G7 | BoardSquare.H7; RookBitBoard rookBlack = new RookBitBoard(ChessPieceColors.Black); rookBlack.Bits = BoardSquare.D8 | BoardSquare.H8; BishopBitBoard bishopBlack = new BishopBitBoard(ChessPieceColors.Black); bishopBlack.Bits = BoardSquare.F8; QueenBitBoard queenBlack = new QueenBitBoard(ChessPieceColors.Black); queenBlack.Bits = BoardSquare.D1; KingBitBoard kingBlack = new KingBitBoard(ChessPieceColors.Black); kingBlack.Bits = BoardSquare.C8; KnightBitBoard knightBlack = new KnightBitBoard(ChessPieceColors.Black); knightBlack.Bits = 0; //RookBitBoard badMove = new RookBitBoard( ChessPieceColors.Black ); //badMove.Bits = BoardSquare.B8; lolBoard.Update(pawnWhite); lolBoard.Update(knightWhite); lolBoard.Update(queenWhite); lolBoard.Update(rookWhite); lolBoard.Update(bishopWhite); lolBoard.Update(kingWhite); lolBoard.Update(pawnBlack); lolBoard.Update(rookBlack); lolBoard.Update(bishopBlack); lolBoard.Update(queenBlack); lolBoard.Update(kingBlack); lolBoard.Update(knightBlack); ColoredBitBoard bestMove = NegaMax.GetBestMove(lolBoard, 3, ChessPieceColors.White, MoveGen.GenerateLegalMoves, Eval.EvaluateState); }
/* private static void WinBoardCastlingFAIL( ChessBoard chessBoard, ChessPieceColors winboardColor ) { * _winboardConverter = new StringBitboardConverter( chessBoard, winboardColor ); * ColoredBitBoard bitBoardMoveRecived = _winboardConverter.ConvertStringMoveToBitBoard( "E8G8" ); * chessBoard.Update( bitBoardMoveRecived ); * }*/ private static void FAILFAILtest() { ChessBoard lolboard = new ChessBoard(); lolboard.InitializeGame(); PawnBitBoard pawnWhite = new PawnBitBoard(ChessPieceColors.White); pawnWhite.Bits = BoardSquare.E4 | BoardSquare.B2 | BoardSquare.C2 | BoardSquare.D2 | BoardSquare.H2 | BoardSquare.G2 | BoardSquare.F2 | BoardSquare.A2; lolboard.Update(pawnWhite); PawnBitBoard pawnBlack = new PawnBitBoard(ChessPieceColors.Black); pawnBlack.Bits = BoardSquare.A7 | BoardSquare.B7 | BoardSquare.C7 | BoardSquare.D7 | BoardSquare.E5 | BoardSquare.F7 | BoardSquare.G7 | BoardSquare.H7; lolboard.Update(pawnBlack); KnightBitBoard lilleKnejtWhite = new KnightBitBoard(ChessPieceColors.White); lilleKnejtWhite.Bits = BoardSquare.C3 | BoardSquare.G1; lolboard.Update(lilleKnejtWhite); KnightBitBoard lilleKnejtBlack = new KnightBitBoard(ChessPieceColors.Black); lilleKnejtBlack.Bits = BoardSquare.C6 | BoardSquare.G8; lolboard.Update(lilleKnejtBlack); KnightBitBoard lilleKnejtWhitenummer2 = new KnightBitBoard(ChessPieceColors.White); lilleKnejtWhitenummer2.Bits = BoardSquare.C3 | BoardSquare.F3; lolboard.Update(lilleKnejtWhitenummer2); PawnBitBoard pawnBlacknummerto = new PawnBitBoard(ChessPieceColors.Black); pawnBlacknummerto.Bits = BoardSquare.A7 | BoardSquare.B7 | BoardSquare.C7 | BoardSquare.D5 | BoardSquare.E5 | BoardSquare.F7 | BoardSquare.G7 | BoardSquare.H7; lolboard.Update(pawnBlacknummerto); //INGEN FEJL! PawnBitBoard pawnWhitenummerto = new PawnBitBoard(ChessPieceColors.White); pawnWhitenummerto.Bits = BoardSquare.A2 | BoardSquare.B2 | BoardSquare.C2 | BoardSquare.D2 | BoardSquare.D5 | BoardSquare.G2 | BoardSquare.F2 | BoardSquare.H2; lolboard.Update(pawnWhitenummerto); //Måske fejl? KnightBitBoard lilleKnejtBlacknummerto = new KnightBitBoard(ChessPieceColors.Black); lilleKnejtBlacknummerto.Bits = BoardSquare.B4 | BoardSquare.G8; lolboard.Update(lilleKnejtBlacknummerto); KnightBitBoard lilleKnejtWhitenummer3 = new KnightBitBoard(ChessPieceColors.White); lilleKnejtWhitenummer3.Bits = BoardSquare.C3 | BoardSquare.E5; lolboard.Update(lilleKnejtWhitenummer3); KnightBitBoard lilleKnejtBlacknummertre = new KnightBitBoard(ChessPieceColors.Black); lilleKnejtBlacknummertre.Bits = BoardSquare.B4 | BoardSquare.F6; lolboard.Update(lilleKnejtBlacknummertre); BishopBitBoard lillebishopruner = new BishopBitBoard(ChessPieceColors.White); lillebishopruner.Bits = BoardSquare.C1 | BoardSquare.B5; lolboard.Update(lillebishopruner); ColoredBitBoard bestMove = NegaMax.GetBestMove(lolboard, 2, ChessPieceColors.Black, MoveGen.GenerateLegalMoves, Eval.EvaluateState); }