private static void DoSearch() { var fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; // Starting pos //fen = "2rr3k/pp3pp1/1nnqbN1p/3pN3/2pP4/2P3Q1/PPB4P/R4RK1 w - -"; // Mate in 3 fen = "r1b1k2r/ppppnppp/2n2q2/2b5/3NP3/2P1B3/PP3PPP/RN1QKB1R w KQkq - 0 1"; // Developed fen = "r1b1kb1r/2pp1ppp/1np1q3/p3P3/2P5/1P6/PB1NQPPP/R3KB1R b KQkq - 0 1 "; // Midgame var fact = new BoardFactory(); var board = fact.ParseFEN(fen); var hyperbola = new HyperbolaQuintessence(); var evaluationService = new EvaluationService(); var attacksService = new AttacksService(hyperbola); var movesService = new PossibleMovesService(attacksService, hyperbola); var interruptor = new ConsoleInterruptor(); var searchService = new SearchService(movesService, evaluationService, interruptor); searchService.OnSearchInfo += info => Console.WriteLine(info.ToString()); var sParams = new SearchParams(); //sParams.MaxDepth = 5; sParams.Infinite = true; var move = searchService.Search(board, sParams); }
static void Main(string[] args) { Console.WriteLine("Chess.NET by Gediminas Masaitis"); IChessProtocol protocol = null; var interruptor = new ConsoleInterruptor(); while (true) { string line; if (interruptor.IsRunning) { line = interruptor.WaitStopAndGetResult(); } else { line = Console.ReadLine(); } if (protocol == null && line == "uci") { protocol = new UCIProtocol(interruptor); protocol.OnOutput += Console.WriteLine; protocol.OnExit += Environment.Exit; } protocol?.Input(line); } }
private static void TestRepetitions() { var fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; // Starting pos //fen = "2rr3k/pp3pp1/1nnqbN1p/3pN3/2pP4/2P3Q1/PPB4P/R4RK1 w - -"; // Mate in 3 fen = "r1b1k2r/ppppnppp/2n2q2/2b5/3NP3/2P1B3/PP3PPP/RN1QKB1R w KQkq - 0 1"; // Developed var fact = new BoardFactory(); var board = fact.ParseFEN(fen); var hyperbola = new HyperbolaQuintessence(); var evaluationService = new EvaluationService(); var attacksService = new AttacksService(hyperbola); var movesService = new PossibleMovesService(attacksService, hyperbola); var interruptor = new ConsoleInterruptor(); var searchService = new SearchService(movesService, evaluationService, interruptor); Console.WriteLine(searchService.IsRepetition(board)); var move = new Move(1, 18, ChessPiece.WhiteKnight); board = board.DoMove(move); Console.WriteLine(move.ToPositionString() + " " + searchService.IsRepetition(board)); move = new Move(57, 42, ChessPiece.BlackKnight); board = board.DoMove(move); Console.WriteLine(move.ToPositionString() + " " + searchService.IsRepetition(board)); move = new Move(18, 1, ChessPiece.WhiteKnight); board = board.DoMove(move); Console.WriteLine(move.ToPositionString() + " " + searchService.IsRepetition(board)); move = new Move(42, 57, ChessPiece.BlackKnight); board = board.DoMove(move); Console.WriteLine(move.ToPositionString() + " " + searchService.IsRepetition(board)); move = new Move(1, 18, ChessPiece.WhiteKnight); board = board.DoMove(move); Console.WriteLine(move.ToPositionString() + " " + searchService.IsRepetition(board)); move = new Move(57, 40, ChessPiece.BlackKnight); board = board.DoMove(move); Console.WriteLine(move.ToPositionString() + " " + searchService.IsRepetition(board)); }