private void UserAnswerBTN_Click(object sender, EventArgs e) { try { if (++clicksCount == 1) { UserAnswerBTN.Text = "Ответить"; UserAnswerTB.Enabled = true; } else { if (UserAnswerTB.Text == string.Empty) { throw new Exception("Поле ввода не должно быть пустым."); } AnswerTheQuestion(); ++askedQuestionCount; // количество заданных вопросов для обработки случаев, когда система не может вывести ответ #region Проверка условия прекращения работы системы Tuple <string, bool> corteg = workMemory.DefrulesEnumeration(); bool isFinal = corteg.Item2; // булевая переменная, возвращающая содержание факта типа "университет" в РП if (isFinal) { SystemOutputTB.AppendText("Система советует поступать в " + corteg.Item1); UserAnswerBTN.Enabled = false; ExplanationComponentCallBtn.Enabled = true; return; } if (askedQuestionCount == workMemory.QuestionsCount) { SystemOutputTB.AppendText("Система не смогла выбрать ВУЗ, попробуйте еще раз."); UserAnswerBTN.Enabled = false; ExplanationComponentCallBtn.Enabled = true; return; } #endregion } GetQuestion(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
// Обработка нажатия кнопки ответа private void UserAnswerBTN_Click(object sender, EventArgs e) { try { // Если это было первое нажате кнопки "Ответить" (в начале работы программы // она называется "Начать"), то идет переименовывание кнопки и активация кнопки // для отправки ответа if (++clicksCount == 1) { UserAnswerBTN.Text = "Ответить"; UserAnswerTB.Enabled = true; } else { // Если поле для ответа на форме пустая, то выбрасывается исключение if (UserAnswerTB.Text == string.Empty) { throw new Exception("Поле ввода не должно быть пустым."); } // Вызов функции для обработки ответа AnswerTheQuestion(); // Увеличение счетчика отвеченых вопросов ++askedQuestionCount; // === // Проверка условия прекращения работы системы Tuple <string, bool> corteg = workMemory.DefrulesEnumeration(); // Флаг того, что очередной факт из рабочей памяти является логическим выводом с ответом bool isFinal = corteg.Item2; // Вывод логического ответа if (isFinal) { SystemOutputTB.AppendText("Система советует поступать в " + corteg.Item1); UserAnswerBTN.Enabled = false; ExplanationComponentCallBtn.Enabled = true; return; } // Если исчерпан лимит на ответы, то if (askedQuestionCount == workMemory.QuestionsCount) { SystemOutputTB.AppendText("Система не смогла выбрать ВУЗ, попробуйте еще раз."); UserAnswerBTN.Enabled = false; ExplanationComponentCallBtn.Enabled = true; return; } } // Вызов функции для получение нового вопроса // для определения следующего факта GetQuestion(); } catch (Exception ex) { // В случае ошибки обработки ответа выводится соответствующий ответ MessageBox.Show(ex.Message); } }