Пример #1
0
        // 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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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!");
            }
        }