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); }
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); }
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()); }
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; } }
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); }
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); }
public override void OnMove(Square from, Square to, Position newPosition) { var playerWhoDidTheMove = from.Color; UpdatePlayerToMove(playerWhoDidTheMove); UpdateGameState(from, to, newPosition, playerWhoDidTheMove); }