Пример #1
0
        public static void Setup()
        {
            board = new Game.Simulation.Board
            {
                Squares = new Square[, ]
                {
                    { new Square('♜', 'a', 1), new Square('♟', 'a', 2), new Square(' ', 'a', 3), new Square(' ', 'a', 4), new Square(' ', 'a', 5), new Square(' ', 'a', 6), new Square(' ', 'a', 7), new Square(' ', 'a', 8) },

                    { new Square(' ', 'b', 1), new Square(' ', 'b', 2), new Square('♘', 'b', 3), new Square(' ', 'b', 4), new Square(' ', 'b', 5), new Square(' ', 'b', 6), new Square(' ', 'b', 7), new Square(' ', 'b', 8) },

                    { new Square(' ', 'c', 1), new Square(' ', 'c', 2), new Square(' ', 'c', 3), new Square(' ', 'c', 4), new Square(' ', 'c', 5), new Square(' ', 'c', 6), new Square(' ', 'c', 7), new Square(' ', 'c', 8) },

                    { new Square(' ', 'd', 1), new Square(' ', 'd', 2), new Square(' ', 'd', 3), new Square(' ', 'd', 4), new Square(' ', 'd', 5), new Square(' ', 'd', 6), new Square(' ', 'd', 7), new Square(' ', 'd', 8) },

                    { new Square('♚', 'e', 1), new Square(' ', 'e', 2), new Square(' ', 'e', 3), new Square(' ', 'e', 4), new Square(' ', 'e', 5), new Square(' ', 'e', 6), new Square(' ', 'e', 7), new Square('♔', 'e', 8) },

                    { new Square('♝', 'f', 1), new Square(' ', 'f', 2), new Square(' ', 'f', 3), new Square(' ', 'f', 4), new Square(' ', 'f', 5), new Square(' ', 'f', 6), new Square('♙', 'f', 7), new Square(' ', 'f', 8) },

                    { new Square(' ', 'g', 1), new Square('♟', 'g', 2), new Square(' ', 'g', 3), new Square(' ', 'g', 4), new Square(' ', 'g', 5), new Square(' ', 'g', 6), new Square(' ', 'g', 7), new Square('♘', 'g', 8) },

                    { new Square(' ', 'h', 1), new Square(' ', 'h', 2), new Square(' ', 'h', 3), new Square(' ', 'h', 4), new Square(' ', 'h', 5), new Square(' ', 'h', 6), new Square(' ', 'h', 7), new Square(' ', 'h', 8) }
                }
            };

            var whitePlayerMock = new Mock <Player>(Color.white)
            {
                CallBase = true
            };

            var blackPlayerMock = new Mock <Player>(Color.black)
            {
                CallBase = true
            };

            var whitePlayerCloneMock = new Mock <Player>(Color.white)
            {
                CallBase = true
            };

            var gameMock = new Mock <BasicGame>(MockBehavior.Loose, board, whitePlayerMock.Object, blackPlayerMock.Object)
            {
                CallBase = true
            };

            gameMock.Setup((BasicGame self) => self.Board)
            .Returns(board);

            /* Need to provide an implementation of Clone(), since it's an abstract method */
            whitePlayerMock.Setup((Player self) => self.Clone())
            .Returns(() => { return(whitePlayerCloneMock.Object); });

            whitePlayerMock.Setup((Player self) => self.Color)
            .CallBase();

            game        = gameMock.Object;
            whitePlayer = whitePlayerMock.Object;
            blackPlayer = blackPlayerMock.Object;
        }
Пример #2
0
        public Move CreateMoveFromPlayerInput(RankFile pieceCurrentPosition, RankFile pieceDesiredDestination)
        {
            validate(pieceCurrentPosition, pieceDesiredDestination);

            BasicGame game = Player.Game;

            Chess.Game.Board board = game.Board;

            IPiece piece       = board[pieceCurrentPosition].Piece.Object;
            Square destination = board[pieceDesiredDestination];

            return(new Move(Player, piece, destination));
        }
Пример #3
0
        public static void Setup()
        {
            board = new Game.Simulation.Board
            {
                Squares = new Square[, ]
                {
                    { new Square(' ', 'a', 1), new Square(' ', 'a', 2), new Square(' ', 'a', 3), new Square(' ', 'a', 4), new Square(' ', 'a', 5), new Square(' ', 'a', 6), new Square(' ', 'a', 7), new Square(' ', 'a', 8) },

                    { new Square(' ', 'b', 1), new Square(' ', 'b', 2), new Square(' ', 'b', 3), new Square('♟', 'b', 4), new Square(' ', 'b', 5), new Square(' ', 'b', 6), new Square(' ', 'b', 7), new Square(' ', 'b', 8) },

                    { new Square(' ', 'c', 1), new Square(' ', 'c', 2), new Square(' ', 'c', 3), new Square(' ', 'c', 4), new Square(' ', 'c', 5), new Square(' ', 'c', 6), new Square(' ', 'c', 7), new Square('♜', 'c', 8) },

                    { new Square(' ', 'd', 1), new Square(' ', 'd', 2), new Square(' ', 'd', 3), new Square('♔', 'd', 4), new Square(' ', 'd', 5), new Square('♚', 'd', 6), new Square(' ', 'd', 7), new Square(' ', 'd', 8) },

                    { new Square('♜', 'e', 1), new Square(' ', 'e', 2), new Square(' ', 'e', 3), new Square(' ', 'e', 4), new Square(' ', 'e', 5), new Square(' ', 'e', 6), new Square(' ', 'e', 7), new Square(' ', 'e', 8) },

                    { new Square(' ', 'f', 1), new Square(' ', 'f', 2), new Square(' ', 'f', 3), new Square('♞', 'f', 4), new Square(' ', 'f', 5), new Square(' ', 'f', 6), new Square(' ', 'f', 7), new Square(' ', 'f', 8) },

                    { new Square(' ', 'g', 1), new Square(' ', 'g', 2), new Square(' ', 'g', 3), new Square(' ', 'g', 4), new Square(' ', 'g', 5), new Square(' ', 'g', 6), new Square('♞', 'g', 7), new Square(' ', 'g', 8) },

                    { new Square(' ', 'h', 1), new Square(' ', 'h', 2), new Square(' ', 'h', 3), new Square(' ', 'h', 4), new Square(' ', 'h', 5), new Square(' ', 'h', 6), new Square(' ', 'h', 7), new Square(' ', 'h', 8) }
                }
            };

            var whitePlayerMock = new Mock <Player>(Color.white)
            {
                CallBase = true
            };

            var blackPlayerMock = new Mock <Player>(Color.black)
            {
                CallBase = true
            };

            var gameMock =
                new Mock <BasicGame>(MockBehavior.Loose, board, whitePlayerMock.Object, blackPlayerMock.Object)
            {
                CallBase = true
            };

            game        = gameMock.Object;
            blackPlayer = blackPlayerMock.Object;
        }
Пример #4
0
        private void validate(RankFile pieceCurrentPosition, RankFile pieceDesiredDestination)
        {
            BasicGame game = Player.Game;

            Chess.Game.Board board = game.Board;
            IPiece           piece = board[pieceCurrentPosition].Piece.Object;

            if (piece == null)
            {
                throw new InvalidMoveException($"There is no piece at the position {pieceCurrentPosition.ToString()}");
            }

            if (piece.CanMoveTo(board[pieceDesiredDestination]) == false)
            {
                throw new InvalidMoveException($"{piece.GetType().Name} at {pieceCurrentPosition.ToString()} cannot move to {pieceDesiredDestination.ToString()}");
            }

            if (Player.Pieces.Contains(piece) == false)
            {
                throw new InvalidMoveException($"{piece.GetType().Name} at {pieceCurrentPosition.ToString()} does not belong to {Player.Name}");
            }
        }
Пример #5
0
 public static void Setup()
 {
     board = new Game.Simulation.Board(squares: Game.Simulation.Board.DefaultEmptySquares());
     pawn  = new Pawn(Color.white);
     board['e', 4].Piece = pawn;
 }