Exemple #1
0
        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);
        }
Exemple #2
0
        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;
                }
            }
        }