Exemple #1
0
        public void CannotSolveKingSuicide()
        {
            string from = "1r6/8/8/8/8/8/7r/K7 w KQkq - 0 1";

            var players = new List<Player> { new Player(1), new Player(2) };
            var s = new FENParser().Parse(from, players);
            var m = new ChessMove("Kb2") { PieceType = PieceTypes.King, Player = players[0], From = new Position(), To = "b2" };
            m.Apply(s);
        }
Exemple #2
0
        public void SolveNothing()
        {
            string from = "8/8/8/8/8/3R4/2R1R3/3R4 w KQkq - 0 1";
            string   to = "8/8/8/8/8/3R4/2RRR3/8 b KQkq - 0 1";

            var players = new List<Player> { new Player(1), new Player(2) };
            var s = new FENParser().Parse(from, players);
            var m = new ChessMove("Rd1d2") { PieceType = PieceTypes.Rook, Player = players[0], From = "d1", To = "d2" };
            m.Apply(s);
            Assert.AreEqual(to, s.ToString());
        }
Exemple #3
0
        public void SolveKingUnderCheck()
        {
            string from = "3r4/8/8/8/8/8/3N1N2/3K4 w KQkq - 0 1";
            string to = "3r4/8/8/8/4N3/8/3N4/3K4 b KQkq - 0 1";

            var players = new List<Player> { new Player(1), new Player(2) };
            var s = new FENParser().Parse(from, players);
            var m = new ChessMove("Ne4") { PieceType = PieceTypes.Knight, Player = players[0], From = new Position(), To = "e4" };
            m.Apply(s);
            Assert.AreEqual(to, s.ToString());
        }
Exemple #4
0
        public void SolveFile()
        {
            string from = "R7/8/8/8/8/8/8/R7 w KQkq - 0 1";
            string   to = "R7/8/8/8/R7/8/8/8 b KQkq - 0 1";

            var players = new List<Player> { new Player(1), new Player(2) };
            var s = new FENParser().Parse(from, players);
            var m = new ChessMove("R1a4") { PieceType = PieceTypes.Rook, Player = players[0], From = new Position(null, 1), To = "a4"};
            m.Apply(s);
            Assert.AreEqual(to, s.ToString());
        }
Exemple #5
0
        public void SimpleMove()
        {
            string from = "8/8/8/8/8/8/P7/8 w KQkq - 0 1";
            string   to = "8/8/8/8/8/P7/8/8 b KQkq - 0 1";

            var players = new List<Player> { new Player(1), new Player(2) };
            var s = new FENParser().Parse(from, players);
            var m = new ChessMove("a3") { PieceType = PieceTypes.Pawn, Player = players[0], From = new Position(), To = "a3"};
            m.Apply(s);
            Assert.AreEqual(to, s.ToString());
        }
        private void StartProcess()
        {
            var startInfo = new ProcessStartInfo
                                {
                                    FileName = _Path,
                                    RedirectStandardInput = true,
                                    RedirectStandardOutput = true,
                                    UseShellExecute = false,
                                    CreateNoWindow = true
                                };

            P = Process.Start(startInfo);

            try
            {
                StartNewGame(P);
                SetPosition(P, GameState);
                Go(P, _Depth);
                _BestMove = GetBest(P);
                P.Kill();

                OnPropertyChanged("BestMove");
                OnPropertyChanged("State");
            }
            catch (Exception)
            {
                Recheck = true;
                _BestMove = null;
                Error = true;
                OnPropertyChanged("BestMove");
                OnPropertyChanged("State");
            }
        }
        public ChessMove FindBestMove(ChessState state)
        {
            _BestMove = null;
            Recheck = false;
            Error = false;

            if (_Path == null)
            {
                Error = true;
                return null;
            }

            if (P != null && !P.HasExited)
                P.Kill();

            while (Worker.IsAlive)
                Worker.Abort();

            Worker = new Thread(StartProcess);
            Worker.Start();
            GameState = state;

            return null;
        }
Exemple #8
0
        public void SolveRightPlayer()
        {
            string from = "8/8/8/8/8/8/8/R6r w KQkq - 0 1";
            string to = "8/8/8/8/8/8/8/3R3r b KQkq - 0 1";

            var players = new List<Player> { new Player(1), new Player(2) };
            var s = new FENParser().Parse(from, players);
            var m = new ChessMove("Rd1") { PieceType = PieceTypes.Rook, Player = players[0], From = new Position(), To = "d1" };
            m.Apply(s);
            Assert.AreEqual(to, s.ToString());
        }