Esempio n. 1
0
        public static void Main(string[] args)
        {
            int minNumber = 1, maxNumber = 7;

            Console.Write("\n*********************************************");
            Console.Write("\n************* MasterMind ********************");
            Console.Write("\n*********************************************");
            Console.Write("\n\n********************************************");

            Console.Write("\nWelcome to Mastermind.");
            Console.Write($"\nYou have 10 tries to guess a 4 digit number using digits from {minNumber} to {maxNumber - 1}.");
            Console.Write("\nKeep in mind that the 4 digit number may have duplicate numbers.");
            Console.Write("\nA (-) symbol will appear for every digit that is correct, but in the wrong position.");
            Console.Write("\nA (+) symbol will appear for every digit that is correct and in the correct position.");
            Console.Write("\nNothing will be printed for incorrect digits.");
            Console.Write("\nLet's begin. ");
            Console.Write("\n********************************************\n\n");
            bool           exitgame = false;
            ConsoleKeyInfo keypressed;
            Random         rnd = new Random();

            while (!exitgame)
            {
                int    attempts      = 0;
                string currentstring = "";
                bool   numberguessed = false;
                List <MasterNumber> numberToGuess = new List <MasterNumber>()
                {
                    new MasterNumber {
                        Position = 0, Value = rnd.Next(minNumber, maxNumber)
                    },
                    new MasterNumber {
                        Position = 1, Value = rnd.Next(minNumber, maxNumber)
                    },
                    new MasterNumber {
                        Position = 2, Value = rnd.Next(minNumber, maxNumber)
                    },
                    new MasterNumber {
                        Position = 3, Value = rnd.Next(minNumber, maxNumber)
                    }
                };

                Console.Write("\nEnter your guess number : ");
                while (attempts < 10 && !numberguessed)
                {
                    keypressed    = Console.ReadKey(true);
                    currentstring = CustomValidator.SetInputValue(currentstring, keypressed);
                    if (CustomValidator.InputReadyToCheck(currentstring, keypressed))
                    {
                        attempts++;
                        numberguessed = CustomValidator.GuessedNumber(currentstring, numberToGuess);
                        if (!numberguessed)
                        {
                            currentstring = "";
                            if (attempts < 10)
                            {
                                Console.Write($"\nAttempt number {attempts + 1} : ");
                            }
                        }
                    }
                }
                if (!numberguessed)
                {
                    Console.Write($"\nSorry you did not guess the number:  {String.Join("", numberToGuess.Select(x => x.Value))}");
                }
                exitgame = CustomValidator.ContinueGame();
            }
        }