private IMoveResult PlayerMoveHelper() { Console.WriteLine($"\n ==================== {_player} ===================== "); Position from = UserInteraction.GetPositionFromUser("Position of your figure: "); Position destination = UserInteraction.GetPositionFromUser("Destination position: "); IMoveResult moveResult = _gameConductor.DoMove(from, destination); var isValid = moveResult.IsValidMove(); while (isValid.Status != MoveResultStatus.Valid) { Console.WriteLine($"Invalid move: {isValid.Cause}"); PlayerMoveHelper(); } BoardDisplay.ShowFullInfoBoard(moveResult); Console.WriteLine("Select action"); Console.WriteLine("1. Submit"); Console.WriteLine("2. Undo"); Console.WriteLine("3. Save"); int choice = UserInteraction.GetNumberFromUser("", "Option not found, please try again", 1, 3); if (choice == 2) { Console.WriteLine(_gameConductor.Undo() ? "The move has been reversed." : "Cannot reverse move."); BoardDisplay.ShowFullInfoBoard(moveResult); return(PlayerMoveHelper()); } if (choice == 3) { return(SaveGame(moveResult)); } return(moveResult); }
private IMoveResult MoveHelper() { var movePositions = GetMovePositions(); IMoveResult moveResult = _gameConductor.DoMove(movePositions.From, movePositions.Destination); var isValid = moveResult.IsValidMove(); while (isValid.Status != MoveResultStatus.Valid) { Console.WriteLine($"Invalid move: {isValid.Cause}"); return(MoveHelper()); } BoardDisplay.ShowFullInfoBoard(moveResult); return(moveResult); }
private void UserMove(IMoveResult moveResult, int userIdx) { while (!moveResult.IsCheckMate(_players[userIdx].TeamColor)) { moveResult = NextTurn(moveResult, userIdx); if (moveResult.IsValidMove().Status == MoveResultStatus.Stopped) { return; } userIdx = userIdx == 1 ? 0 : 1; } EndGame(userIdx); }
private void PlayerMove(IMoveResult moveResult) { BoardDisplay.ShowFullInfoBoard(moveResult); if (moveResult.IsCheckMate(_player.TeamColor)) { Console.WriteLine("\n \n \n \n"); Console.WriteLine($"Computer wins!"); return; } moveResult = PlayerMoveHelper(); if (moveResult.IsValidMove().Status != MoveResultStatus.Stopped) { ComputerMove(moveResult); } }