// gameSession: a single game session progress private eRunState gameSession(out ushort o_StepsTaken) { eRunState runState = eRunState.Continue; // current game run state ushort guessesAmount = getGuessesAmount(); m_Logic.UserGuessesAmount = guessesAmount; // set guessAmount m_Logic.InitiateGame(); o_StepsTaken = 0; for (int i = 1; i < m_Logic.Board.Length && runState == eRunState.Continue; i++) { Screen.Clear(); PrintUtils.PrintCurrentBoardStatus(m_Logic.Board); runState = handleGuessInput(i); ++o_StepsTaken; } // check if user had too many steps if (runState == eRunState.Continue && o_StepsTaken == m_Logic.UserGuessesAmount) { runState = eRunState.Lost; } return(runState); }
private eRunState handleGuessInput(int i_BoardIndex) { eRunState result = eRunState.Continue; // build string StringBuilder userMessage = new StringBuilder(); userMessage.Append("Please type your next guess <"); for (int i = 0; i < m_Logic.GuessArraySize; i++) { userMessage.AppendFormat("{0}", (char)((char)GameLogic.eGuessLetterBounds.MinGuessLetter + i)); if (i < GameLogic.k_GuessArraySize - 1) { userMessage.Append(k_WordDelimiter); } } userMessage.AppendFormat("> or '{0}' to quit", (char)eGameKeys.QuitKey); // get user guess string userGuess = getUserInput(eInputValidation.UserGuess, userMessage.ToString()); if (userGuess == ((char)eGameKeys.QuitKey).ToString()) { result = eRunState.UserQuit; // user opted to quit } else { // keep going insertGuessToBoard(i_BoardIndex, userGuess); if (m_Logic.IsWinningGuess(i_BoardIndex)) { result = eRunState.Won; } } return(result); }
private void handleEndSession(ref eRunState io_RunState, ushort i_StepsTaken) { if (io_RunState == eRunState.Won) { Console.WriteLine("You guessed after {0} steps!", i_StepsTaken); } else if (io_RunState == eRunState.Lost) { Console.WriteLine("No more guesses allowed. You Lost."); } string userMessage = string.Format( "Would you like to start a new game? ({0}/{1})", (char)eGameKeys.YesKey, (char)eGameKeys.NoKey); string input = getUserInput(eInputValidation.ExitScreen, userMessage); if (input == ((char)eGameKeys.NoKey).ToString()) { io_RunState = eRunState.EndGame; Console.WriteLine("Goodbye!"); } }