Пример #1
0
        public void GetDirection_MoveFromBFileToAFileOnFirstRank_ReturnsLeft()
        {
            Position origin = new Position(2, 1, PositionStatus.White);
            Position destination = new Position(1, 1, PositionStatus.White);

            Direction result = origin.GetDirectionTo(destination);

            Assert.AreEqual(Direction.Left, result);
        }
Пример #2
0
        public void GetDirection_MoveARankForwardAndAFileForward_ReturnsForwardOnRightDiagonal()
        {
            Position origin = new Position(1, 1, PositionStatus.White);
            Position destination = new Position(2, 2, PositionStatus.White);

            Direction result = origin.GetDirectionTo(destination);

            Assert.AreEqual(Direction.ForwardOnRightDiagonal, result);
        }
Пример #3
0
 public void Start(Position startingPosition, PieceColor playerToMove)
 {
     State = GameState.Normal;
     PlayerToMove = playerToMove;
     UpdateGameState(new Square(0, 0, new NullPiece(null)),
                     new Square(0, 0, new NullPiece(null)),
                     startingPosition,
                     PlayerToMove.GetOppositeColor());
 }
Пример #4
0
 private void UpdateGameState(Square from, Square to, Position newPosition, PieceColor playerWhoDidTheMove)
 {
     if (PlayerMovedPawnToPromotionRank(from, to))
     {
         State = GameState.Promotion;
     }
     else if (newPosition.WhiteKingIsInCheck() || newPosition.BlackKingIsInCheck())
     {
         State = newPosition.HasLegalMoves(PlayerToMove) ? GameState.Check : GameState.CheckMate;
     }
     else
     {
         State = newPosition.HasLegalMoves(PlayerToMove) &&
                 newPosition.HasLegalMoves(playerWhoDidTheMove)
                     ? GameState.Normal
                     : GameState.StaleMate;
     }
 }
Пример #5
0
        public void GetDirection_MoveFromFirstToSecondRank_ReturnsForward()
        {
            Position origin = new Position(1, 1, PositionStatus.White);
            Position destination = new Position(1, 2, PositionStatus.White);

            Direction result = origin.GetDirectionTo(destination);

            Assert.AreEqual(Direction.Forward, result);
        }
Пример #6
0
        public void GetDirection_MoveFromThirdToFirstRank_ReturnBackward()
        {
            Position origin = new Position(1, 3, PositionStatus.White);
            Position destination = new Position(1, 2, PositionStatus.White);

            Direction result = origin.GetDirectionTo(destination);

            Assert.AreEqual(Direction.Backward, result);
        }
Пример #7
0
 public override void OnMove(Square from, Square to, Position newPosition)
 {
     var playerWhoDidTheMove = from.Color;
     UpdatePlayerToMove(playerWhoDidTheMove);
     UpdateGameState(from, to, newPosition, playerWhoDidTheMove);
 }