예제 #1
0
        public void Run()
        {
            levelNumbers = arrayGenerator.GenerateArray(gameSettings.DoorsAmount);

            io.WriteOutput(phraseProvider.GetPhrase("WelcomeStart"));
            io.WriteOutput($"{gameSettings.ExitCode}");
            io.WriteOutput(phraseProvider.GetPhrase("WelcomeEnd"));

            while (true)
            {
                io.WriteOutput(phraseProvider.GetPhrase("Level"));
                io.WriteOutput($"{currentLevel}");
                io.WriteOutput(phraseProvider.GetPhrase("TheDoorsAre"));
                io.printArray(levelNumbers);

                do
                {
                    io.WriteOutput(phraseProvider.GetPhrase("Select"));

                    InputCheck();

                    if (selectedNum == gameSettings.ExitCode)
                    {
                        break;
                    }
                } while (!operationWithData.Contains(levelNumbers, selectedNum));

                if (selectedNum == gameSettings.ExitCode)
                {
                    io.WriteOutput(phraseProvider.GetPhrase("Thanks"));
                    break;
                }
                else if (selectedNum == gameSettings.ExitDoorNumber)
                {
                    if (currentLevel > 1)
                    {
                        operationWithData.Divide(levelNumbers, history.Pop());
                        io.WriteOutput(phraseProvider.GetPhrase("YouSelected"));
                        io.WriteOutput($"{selectedNum}");
                        io.WriteOutput(phraseProvider.GetPhrase("Previous"));
                        currentLevel--;
                    }
                    else if (currentLevel == 1)
                    {
                        io.WriteOutput(phraseProvider.GetPhrase("AlreadyFirst"));
                    }
                }
                else
                {
                    if (currentLevel < gameSettings.MaxLevel)
                    {
                        operationWithData.Multiply(levelNumbers, selectedNum);
                        history.Push(selectedNum);
                        io.WriteOutput(phraseProvider.GetPhrase("YouSelected"));
                        io.WriteOutput($"{selectedNum}");
                        io.WriteOutput(phraseProvider.GetPhrase("Next"));
                        currentLevel++;
                    }
                    else
                    {
                        io.WriteOutput(phraseProvider.GetPhrase("MaxLevelReached"));
                    }
                }
            }
            io.ReadKey();
        }