private void InitButtonName(Adapted_string adstring) { Answers[0].Text += adstring.correct_answer; Answers[1].Text += adstring.answer2; Answers[2].Text += adstring.answer3; Answers[3].Text += adstring.answer4; }
// Методы public Adapted_string RandomizeQuestion(int [] Forbidden_index, int count) /* Выбирает наугад 1 вопрос из 28, исключая index вопрос. * Возвращает Adapted_string, в отличии от RandomizeQuestions() */ { rand = new Random(); int n, i = 0, result = 0; while (true) { n = rand.Next(1, 29); for (int j = 0; j < 10; j++) { if (n != Forbidden_index[j]) { result++; } } if (result == 10) { break; } i++; } Findex = Forbidden_index; Findex[count] = n; Adapted_string Return = Array[n - 1]; return(Return); }
// Конструктор public Adapted_strings() { Array = new Adapted_string[length]; for (int i = 0; i < length; i++) { Array[i] = new Adapted_string(); } InitializeStandartQuestions(); Findex = new int[5]; }
public void AddQuestions(Adapted_string ToBeAdded) /* Добавляет пользовательский вопрос к текущей базе вопросов. * (При выходе из программы исчезают вопросы, потом реализую подгрузку из файла с сохранением в файл) */ { Adapted_string[] Temp = new Adapted_string[length + 1]; for (int i = 0; i < length; i++) { Temp[i] = Array[i]; } Temp[length] = ToBeAdded; length++; Array = Temp; }
public void EditQuestions(Adapted_string ToBeModified) /* Редактирует вопрос из текущей базы вопросов * (При выходе из программы редактированные вопросы не заменяют изначальные вопросы, * потом реализую подгрузку из файла с сохранением в файл)*/ { bool a = true; Adapted_string[] Temp = new Adapted_string[length]; for (int i = 0; i < length; i++) { if (Array[i].quest == ToBeModified.quest && a) { Temp[i] = ToBeModified; a = false; } Temp[i] = Array[i]; } Array = Temp; }
public void DeleteQuestions(Adapted_string ToBeDeleted) /* Удаляет вопросы из текущей базы вопросов, сравнивая их по критериям. * (При выходе из программы вопросы исчезают, потом реализую подгрузку из файла с сохранением в файл) */ { bool a = true; Adapted_string[] Temp = new Adapted_string[length - 1]; for (int i = 0, j = 0; i < length - 1; i++, j++) { if (Array[i].quest == ToBeDeleted.quest && a) { a = false; j++; } Temp[i] = Array[j]; } length--; Array = Temp; }
// Методы private void SwapAnswers(Adapted_string adstring) /*Перетасовывает содержимое кнопок Answer1, Answer2, Answer3 & Answer4 так, * чтобы они отличались от первоначального местоположения. */ { Random rand = new Random(); Button[] Temp = new Button[4]; Temp = InitTempButtons(); int correct = rand.Next(1, 5); int uncorrect1 = 0, uncorrect2 = 0, uncorrect3 = 0; uncorrect1 = RandomizeUncorrectAns(rand, correct); uncorrect2 = RandomizeUncorrectAns(rand, correct, uncorrect1); uncorrect3 = RandomizeUncorrectAns(rand, correct, uncorrect1, uncorrect2); Answers[0] = Temp[correct - 1]; Answers[1] = Temp[uncorrect1 - 1]; Answers[2] = Temp[uncorrect2 - 1]; Answers[3] = Temp[uncorrect3 - 1]; InitButtonName(adstring); }
private void Randomizing() /* Отдельный обработчик для обработки потока, в котором рандомизируются вопросы и ответы к ним. * Выполняется в цикле do { } while(n), переменная n отвечает за разрешение выполнить итерацию. * Если пользователь ответил на вопрос, правильно или нет, не имеет значения, * то переменная принимает значение true, в остальных случаях - false. */ { try { Action Act = delegate { do { // DisableAllButtons(); RandomedQuest = new Adapted_string(); RandomedQuest = Array.RandomizeQuestion(Findex, count); Findex = Array.Forbidden_index; count++; if (count == 5) { count = 0; } // EnableAllButtons(); this.Question.Visible = true; this.Question.Text = RandomedQuest.quest; SwapAnswers(RandomedQuest); obj.RandomizeAllowed = false; }while (obj.RandomizeAllowed); // n }; this.Invoke(Act); } catch (Exception e) { MessageBox.Show(e.Message); } }
private void AddButton_Click(object sender, EventArgs e) { toBeAdded = new Adapted_string(this.QuestionBox.Text, this.CorrectAnswerBox.Text, this.Answer2Box.Text, this.Answer3Box.Text, this.Answer4Box.Text); }
private void RemoveButton_Click(object sender, EventArgs e) { toBeDeleted = new Adapted_string(this.RemoveText.Text, string.Empty, string.Empty, string.Empty, string.Empty); }