private TurnResult TakeTurn(PlayerMove playerMove, IUserInput input, IUserResponse userResponse, Player player, PieceColor pieceColor) { var turnResult = ChessBoard .PieceAt(playerMove.PieceSelectionXCoordinate, playerMove.PieceSelectionYCoordinate) .Move(playerMove.PieceDestinationXCoordinate, playerMove.PieceDestinationYCoordinate); userResponse.ReturnMoveInformation(turnResult, ChessBoard); while (!turnResult.TurnCompleted) { playerMove = GetMoveFromPlayer(input, userResponse, player, pieceColor); turnResult = ChessBoard .PieceAt(playerMove.PieceSelectionXCoordinate, playerMove.PieceSelectionYCoordinate) .Move(playerMove.PieceDestinationXCoordinate, playerMove.PieceDestinationYCoordinate); userResponse.ReturnMoveInformation(turnResult, ChessBoard); } return(turnResult); }
public void BeginGame(IUserInput whiteInput, IUserInput blackInput, IUserResponse userResponse) { SetUpChessBoard(); var isGameComplete = false; var beginingTurn = new TurnResult(); beginingTurn.Flags.Add(Flag.GameStart); userResponse.ReturnMoveInformation(beginingTurn, ChessBoard); while (!isGameComplete) { isGameComplete = WhiteTurn(whiteInput, userResponse); TurnCounter++; if (isGameComplete) { break; } isGameComplete = BlackTurn(blackInput, userResponse); TurnCounter++; if (isGameComplete) { break; } if (TurnCounter == 50 && ChessBoard.CapturedBlackPieces.Count == 0 && ChessBoard.CapturedWhitePieces.Count == 0) { isGameComplete = true; var result = new TurnResult(); result.Flags.Add(Flag.GameDraw); userResponse.ReturnMoveInformation(result, ChessBoard); break; } } }