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")); } } }
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(); }
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); }
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>(); }
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); }