示例#1
0
        /// <summary>
        /// Ответ на вопрос пользователем
        /// </summary>
        /// <param name="reader">Экземпляр QBDBReader с текущим опросом</param>
        /// <param name="nBlock">Текущий номер блока вопросов</param>
        /// <returns>Дан ли ответ пользователем</returns>
        static bool AnswerOnQuest(QBDBReader reader, int nBlock)
        {
            List <Question> quests = reader.GetQuestsBlock(nBlock); //Получение списка вопросов в блоке

            //Вывод вопросов на экран
            Console.WriteLine();
            for (int i = 0; i < quests.Count; i++)
            {
                Console.Write('[' + i.ToString() + ']');
                Console.WriteLine(quests[i].quest);
            }
            String input_line = Console.ReadLine();                   //Получение ответа от пользователя
            int    res        = ParseInput(input_line, quests.Count); //Парсинг введенных пользователем данных

            if (TestErr(res))                                         //Проверка корректности введенных данных на ошибки
            {
                Console.WriteLine();
                if (currRate < quests[res].rate) //Если рейтинг выбранного ответа больше текущего
                {
                    currRate = quests[res].rate; //Увеличиваем рейтинга
                }
                return(true);
            }
            return(false);
        }
示例#2
0
        /// <summary>
        /// Статический метод, для создания экземпляра класса QBDBReader и выбора опроса для прохождения.
        /// </summary>
        /// <returns>Экземпляр класса QBDRBReader, с содержимым файла</returns>
        public static QBDBReader GetAllBlocks()
        {
            QBDBReader qbl = null;

            try
            {
                String[] filesBlock = Directory.GetFiles(dirQuest, fileExt); //Получение списка файлов *.qbdb
                if (filesBlock.Length == 0)                                  //Если файлов не найдено
                {
                    return(null);
                }
                String[] blockNames = GetBlockNames(filesBlock); //Получение имен опросов
                int      selFile;
                if (1 == filesBlock.Length)                      //Если опрос всего один, отметить его как выбранный
                {
                    selFile = 0;
                }
                else //Иначе предоставить выбор пользователю
                {
                    selFile = GetSelectCurrFile(blockNames); //Выбор пользователем проходимого опроса.
                }
                if (selFile == (int)Errors.ERREXIT)
                {
                    return(null);
                }
                currFile = filesBlock[selFile];
                qbl      = ReadFileBlock(currFile); //Считывание файла
                return(qbl);
            }
            catch (IOException)
            {
                return(null);
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            //Считывание данных выбранного пользователем опроса
            QBDBReader qbdb = QBDBReader.GetAllBlocks();

            Console.WriteLine();
            if (qbdb == null)
            {
                Console.WriteLine("Папка QuestionsDB с опросами не найдена, либо она пустая, либо выбран некорректный опрос.");
                Console.ReadKey();
                return;
            }
            while (qbdb.countBlocks > 0) //Пока не даны ответы на все блоки вопросов
            {
                if (currRate == Age_Rate.R_18)
                {
                    break;                                  //Если текущий рейтинг 18, выход из цикла
                }
                List <String> names = qbdb.GetNameBlocks(); //Получение имен оставшихся блоков вопросов.
                Console.WriteLine();
                Console.WriteLine("---------------------------------------------");
                for (int i = 0; i < names.Count; i++)
                {
                    Console.Write('[' + i.ToString() + ']');
                    Console.WriteLine(names[i]);
                }
                Console.WriteLine("---------------------------------------------");
                String input_line = Console.ReadLine();                       //Получение номера блока от пользователя
                int    res        = ParseInput(input_line, qbdb.countBlocks); //Парсинг введенных пользователем данных
                if (TestErr(res))                                             //Проверка корректности введенных данных на ошибки
                {
                    if (AnswerOnQuest(qbdb, res))                             //Ответ на вопрос пользователем
                    {
                        qbdb.DeleteBlock(res);                                //Если ответ дан, удалить текущий блок из списка
                    }
                }
            }
            Console.Clear();
            Console.WriteLine("Рейтинг - {0}+", Convert.ToString((int)currRate));
            Console.ReadKey();
        }