Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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));
        }