public override MissionBase Generate() { int numOfAnswers = 6; List <string> rightAnswers = new List <string>(); rightAnswers.AddRange(new string[] { "Процессор", "Сетевая карта", "Оперативная память", "Материнская плата", "Видеокарта", "Блок питания", "Накопитель (дисковод)", "ПЗУ" }); List <string> wrongAnswers = new List <string>(); wrongAnswers.AddRange(new string[] { "Flash-память", "Плоттер", "Сканер", "Трекбол", "Источник бесперебойного питания", "Web-камера" }); List <string> answers = new List <string>(); List <int> answerExpected = new List <int>(); while (true) { bool isOneRightAnswer = false; for (int i = 0; i < numOfAnswers; i++) { if (rnd.RandomBool()) { isOneRightAnswer = true; for (int j = 0; j < 20; j++)// not to repeat { var toAdd = rightAnswers[rnd.Next(0, rightAnswers.Count)]; if (!answers.Contains(toAdd)) { answers.Add(toAdd); answerExpected.Add(i); break; } } } else { for (int j = 0; j < 20; j++) { var toAdd = wrongAnswers[rnd.Next(0, wrongAnswers.Count)]; if (!answers.Contains(toAdd)) { answers.Add(toAdd); break; } } } } if (isOneRightAnswer) { break; } } MissionBase mb = new SelectMission(NumOfMission, MissionName, "Выберать устройства, находящьеся в системном блоке", answers.ToArray(), answerExpected.ToArray()); return(mb); }
public override MissionBase Generate() { generate: int numOfAnswers = 6; string[] input = { "Сканер", "Микрофон", "Диктофон", "Компьютерная мышь", "Графический планшет", "Джойстик", "Геймпад", "Трекбол" }; string[] output = { "Монитор (дисплей)", "Принтер", "Плоттер", "Проектор", "Встроенный динамик", "Колонки", "Наушники" }; tasktype tasktype = (tasktype)rnd.Next(1, 3); List <string> task = new List <string>(); List <int> answer = new List <int>(); while (true) { bool isOneNeedAdded = false; for (int i = 0; i < numOfAnswers; i++) { if (rnd.RandomBool()) { for (int j = 0; j < 20; j++) { string toAdd = input.RandomElement(); if (!task.Contains(toAdd)) { task.Add(toAdd); if (tasktype == tasktype.input) { answer.Add(i); isOneNeedAdded = true; } break; } } } else { for (int j = 0; j < 20; j++) { string toAdd = output.RandomElement(); if (!task.Contains(toAdd)) { task.Add(toAdd); if (tasktype == tasktype.output) { answer.Add(i); isOneNeedAdded = true; } break; } } } } if (isOneNeedAdded) { break; } } if (task.Count != numOfAnswers) { goto generate; } MissionBase mb = new SelectMission(NumOfMission, MissionName, "Выберите устройства ввода/вывода", task.ToArray(), answer.ToArray()); return(mb); }