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); }
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()); }
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()); }
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()); }
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; }
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()); }