Пример #1
0
        public ChessGame(
            IBoardEngineProvider <ChessPieceEntity> boardEngineProvider,
            ICheckDetectionService checkDetectionService,
            IBoardSetup <ChessPieceEntity> setup,
            Colours whoseTurn = Colours.White)
        {
            _engine = boardEngineProvider.Provide(setup, (int)whoseTurn);

            _checkDetectionService = checkDetectionService;
            _engine.CurrentPlayer  = (int)whoseTurn;
            CheckState             = _checkDetectionService.Check(BoardState);
        }
Пример #2
0
        private string PlayValidMove(BoardMove move)
        {
            ClearPawnTwoStepState();

            var preMove = _engine.BoardState.ToTextBoard();

            _engine.Move(move);

            if (preMove == _engine.BoardState.ToTextBoard())
            {
                Debugger.Break();
            }

            _engine.CurrentPlayer = (int)NextPlayer();
            CheckState            = _checkDetectionService.Check(BoardState);

            return(CheckState != GameCheckState.None
                ? CheckState.ToString()
                : "");
        }
        public void Check_returns_valid_check_states(PlayerState whiteState, PlayerState blackState, GameCheckState expectedGameState)
        {
            var service = new CheckDetectionService(
                _playerStateServiceMock.Object,
                ChessFactory.BoardMoveService(ChessFactory.ChessBoardActionProvider()),
                ChessFactory.FindAttackPaths(),
                ChessFactory.PathsValidator()
                );

            if (expectedGameState != GameCheckState.BlackCheckmated &&
                expectedGameState != GameCheckState.WhiteCheckmated)
            {
                // give the king a get out move
                var kingPaths = new Paths();
                kingPaths.Add(new Path {
                    new BoardMove(BoardLocation.At(1, 1), BoardLocation.At(1, 2), 1)
                });
                _kingItem.UpdatePaths(kingPaths);
            }
            SetupCheckState(whiteState, Colours.White);
            SetupCheckState(blackState, Colours.Black);

            service.Check(_boardStateMock.Object).ShouldBe(expectedGameState);
        }