예제 #1
0
        public void Run()
        {
            ioDevice.WriteOutput(phraseProvider.GetPhrase("Welcome"));
            doors     = doorsNumbersGenerator.GenerateDoorsNumbers(gameSettings.DoorsAmount);
            userDoors = new Stack <int>();
            bool findTheDoor = false;
            int  level       = 1;
            int  maxLevel    = gameSettings.MaxLevel;
            int  door;

            while (true)
            {
                Show();
                door        = UserInput();
                findTheDoor = false;

                if (door < 0)
                {
                    break;
                }

                for (int i = 0; i < (gameSettings.DoorsAmount - 1); i++)
                {
                    if (door == doors[i])
                    {
                        findTheDoor = true;
                    }
                }

                if (level < maxLevel && findTheDoor && door != gameSettings.ExitDoorNumber)
                {
                    ioDevice.WriteOutput(phraseProvider.GetPhrase("TheNextLevel"));
                    level++;
                    userDoors.Push(door);
                    for (int i = 0; i < 5; i++)
                    {
                        doors[i] = doors[i] * door;
                    }
                }
                else if (door == gameSettings.ExitDoorNumber && level > 1)
                {
                    ioDevice.WriteOutput(phraseProvider.GetPhrase("ThePreviousLevel"));
                    level--;
                    door = userDoors.Pop();
                    for (int i = 0; i < 5; i++)
                    {
                        doors[i] = doors[i] / door;
                    }
                }
                else if (door == gameSettings.ExitDoorNumber || level == maxLevel)
                {
                    ioDevice.WriteOutput(phraseProvider.GetPhrase("ThankYouForPlaying"));
                    break;
                }
                else
                {
                    ioDevice.WriteOutput(phraseProvider.GetPhrase("WrongDoor"));
                }
            }
        }
예제 #2
0
        public void Run()
        {
            NumbersArray = doorsNumbersGenerator.GenerateDoorsNumbers(gameSettings.DoorsAmount); // array with the current numbers
            UserNumbers  = new List <int> {
                1
            };                // numbers entered by user from the start except 0
            string UserInput; // user input through io device

            ioDevice.WriteOutput(phraseProvider.GetPhrase("Welcome"));

            while (true)
            {
                string Numbers = phraseProvider.GetPhrase("TheNumbersAre");
                foreach (int number in NumbersArray)
                {
                    Numbers = Numbers + number + " ";
                }
                Numbers += phraseProvider.GetPhrase("SelectAndEnterNumber");
                ioDevice.WriteOutput(Numbers);
                UserInput = ioDevice.ReadInput();
                if (UserInput.ToLowerInvariant() == gameSettings.ExitCode.ToLowerInvariant())
                {
                    break;                                                                           // exit command
                }
                NumbersChanger(UserInput);
            }
            ioDevice.WriteOutput(phraseProvider.GetPhrase("ThankYouForPlaying"));
            ioDevice.ReadKey();
        }
예제 #3
0
 public Game(
     IDoorsNumbersGenerator doorsNumbersGenerator,
     IInputOutputDevice inputOutputDevice,
     IPhraseProvider phraseProvider,
     ISettingsProvider settingsProvider,
     GameSettings gameSettings)
 {
     this.doorsNumbersGenerator = doorsNumbersGenerator;
     this.inputOutputDevice     = inputOutputDevice;
     this.phraseProvider        = phraseProvider;
     this.settingsProvider      = settingsProvider;
     this.gameSettings          = gameSettings;
     doorNumbersArray           = doorsNumbersGenerator.GenerateDoorsNumbers(settingsProvider.GetGameSettings().DoorsAmount);
 }
예제 #4
0
 public Game
     (IPhraseProvider phraseProvider, IInputOutput ioModule,
     ISettingsProvider settingsProvider, IDoorsNumbersGenerator doorsNumbersGenerator)
 {
     this.phraseProvider = phraseProvider;
     this.ioModule       = ioModule;
     try
     {
         this.gameSettings = settingsProvider.GetGameSettings();
     }
     catch (ArgumentException ex)
     {
         ioModule.WriteOutput(ex.Message);
         this.gameSettings = null;
         return;
     }
     this.doorNumbersHolder = doorsNumbersGenerator.GenerateDoorsNumbers(this.gameSettings.DoorsAmount);
     this.userInputHolder   = new Stack <int>();
 }
예제 #5
0
 private void Reset()
 {  //generate new random array of the doors numbers using doors amount and previous level code
     m_arrayDoorsValue = doorsNumbersGenerator.GenerateDoorsNumbers(gameSettings.doorsAmount, gameSettings.previousLevelCode);
 }