using System; using System.Collections.Generic; using System.Linq; namespace Game { /// /// Contains functions for displaying information to the end user. /// public static class View { public static void ShowBanner() { Console.WriteLine(" MASTERMIND"); Console.WriteLine(" CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); } public static void ShowTotalPossibilities(int possibilities) { Console.WriteLine($"TOTAL POSSIBILITIES = {possibilities}"); Console.WriteLine(); } public static void ShowColorTable(int numberOfColors) { Console.WriteLine(); Console.WriteLine("COLOR LETTER"); Console.WriteLine("===== ======"); foreach (var color in Colors.List.Take(numberOfColors)) Console.WriteLine($"{color.LongName,-13}{color.ShortName}"); Console.WriteLine(); } public static void ShowStartOfRound(int roundNumber) { Console.WriteLine(); Console.WriteLine($"ROUND NUMBER {roundNumber} ----"); Console.WriteLine(); Console.WriteLine("GUESS MY COMBINATION."); Console.WriteLine(); } public static void ShowBoard(IEnumerable history) { Console.WriteLine(); Console.WriteLine("BOARD"); Console.WriteLine("MOVE GUESS BLACK WHITE"); var moveNumber = 0; foreach (var result in history) Console.WriteLine($"{++moveNumber,-9}{result.Guess,-16}{result.Blacks,-10}{result.Whites}"); Console.WriteLine(); } public static void ShowQuitGame(Code code) { Console.WriteLine($"QUITTER! MY COMBINATION WAS: {code}"); Console.WriteLine("GOOD BYE"); } public static void ShowResults(int blacks, int whites) { Console.WriteLine($"YOU HAVE {blacks} BLACKS AND {whites} WHITES."); } public static void ShowHumanGuessedCode(int guessNumber) { Console.WriteLine($"YOU GUESSED IT IN {guessNumber} MOVES!"); } public static void ShowHumanFailedToGuessCode(Code code) { // Note: The original code did not print out the combination, but // this appears to be a bug. Console.WriteLine("YOU RAN OUT OF MOVES! THAT'S ALL YOU GET!"); Console.WriteLine($"THE ACTUAL COMBINATION WAS: {code}"); } public static void ShowScores(int humanScore, int computerScore, bool isFinal) { if (isFinal) { Console.WriteLine("GAME OVER"); Console.WriteLine("FINAL SCORE:"); } else Console.WriteLine("SCORE:"); Console.WriteLine($" COMPUTER {computerScore}"); Console.WriteLine($" HUMAN {humanScore}"); Console.WriteLine(); } public static void ShowComputerStartTurn() { Console.WriteLine("NOW I GUESS. THINK OF A COMBINATION."); } public static void ShowInconsistentInformation() { Console.WriteLine("YOU HAVE GIVEN ME INCONSISTENT INFORMATION."); Console.WriteLine("TRY AGAIN, AND THIS TIME PLEASE BE MORE CAREFUL."); } public static void ShowComputerGuessedCode(int guessNumber) { Console.WriteLine($"I GOT IT IN {guessNumber} MOVES!"); } public static void ShowComputerFailedToGuessCode() { Console.WriteLine("I USED UP ALL MY MOVES!"); Console.WriteLine("I GUESS MY CPU IS JUST HAVING AN OFF DAY."); } public static void PromptNumberOfColors() { Console.Write("NUMBER OF COLORS? "); } public static void PromptNumberOfPositions() { Console.Write("NUMBER OF POSITIONS? "); } public static void PromptNumberOfRounds() { Console.Write("NUMBER OF ROUNDS? "); } public static void PromptGuess(int moveNumber) { Console.Write($"MOVE # {moveNumber} GUESS ? "); } public static void PromptReady() { Console.Write("HIT RETURN WHEN READY ? "); } public static void PromptBlacksWhites(Code code) { Console.Write($"MY GUESS IS: {code}"); Console.Write(" BLACKS, WHITES ? "); } public static void PromptTwoValues() { Console.WriteLine("PLEASE ENTER TWO VALUES, SEPARATED BY A COMMA"); } public static void PromptValidInteger() { Console.WriteLine("PLEASE ENTER AN INTEGER VALUE"); } public static void NotifyBadNumberOfPositions() { Console.WriteLine("BAD NUMBER OF POSITIONS"); } public static void NotifyInvalidColor(char colorKey) { Console.WriteLine($"'{colorKey}' IS UNRECOGNIZED."); } public static void NotifyTooManyColors(int maxColors) { Console.WriteLine($"NO MORE THAN {maxColors}, PLEASE!"); } } }