protected override void Initialize() { int answers; int correct_answer; if (predicates == null) { LoadPredicates(); } question = random.Next(predicates.Length); correct_answer = predicates [question].answer_index; answers = predicates [question].options.Length; random_indices = new ArrayListIndicesRandom(answers - 1); random_indices.Initialize(); random_indices.Add(answers - 1); for (int i = 0; i < answers; i++) { if (random_indices[i] == correct_answer) { Answer.Correct = Answer.GetMultiOption(i); break; } } Container container = new Container(DrawAreaX, DrawAreaY + 0.15, 0.8, 0.6); AddWidget(container); for (int i = 0; i < predicates[question].options.Length; i++) { DrawableArea drawable_area = new DrawableArea(0.8, 0.12); drawable_area.X = DrawAreaX; drawable_area.Y = DrawAreaY + 0.15 + i * 0.18; container.AddChild(drawable_area); drawable_area.Data = i; drawable_area.DataEx = Answer.GetMultiOption(i); drawable_area.DrawEventHandler += delegate(object sender, DrawEventArgs e) { int data = (int)e.Data; int option = random_indices [data]; e.Context.SetPangoNormalFontSize(); e.Context.DrawStringWithWrapping(0.05, 0.02, String.Format(Translations.GetString("{0}) {1}"), Answer.GetMultiOption(data), predicates[question].options[option].ToString()), 0.8 - DrawAreaX); e.Context.Stroke(); }; } }
protected override void Initialize() { int answers; int correct_answer; if (predicates == null) LoadPredicates (); question = random.Next (predicates.Length); correct_answer = predicates [question].answer_index; answers = predicates [question].options.Length; random_indices = new ArrayListIndicesRandom (answers - 1); random_indices.Initialize (); random_indices.Add (answers - 1); for (int i = 0; i < answers; i++) { if (random_indices[i] == correct_answer) { Answer.Correct = Answer.GetMultiOption (i); break; } } Container container = new Container (DrawAreaX, DrawAreaY + 0.15, 0.8, 0.6); AddWidget (container); for (int i = 0; i < predicates[question].options.Length; i++) { DrawableArea drawable_area = new DrawableArea (0.8, 0.12); drawable_area.X = DrawAreaX; drawable_area.Y = DrawAreaY + 0.15 + i * 0.18; container.AddChild (drawable_area); drawable_area.Data = i; drawable_area.DataEx = Answer.GetMultiOption (i); drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e) { int data = (int) e.Data; int option = random_indices [data]; e.Context.SetPangoNormalFontSize (); e.Context.DrawStringWithWrapping (0.05, 0.02, String.Format (Translations.GetString ("{0}) {1}"), Answer.GetMultiOption (data), predicates[question].options[option].ToString ()), 0.8 - DrawAreaX); e.Context.Stroke (); }; } }
private ArrayListIndicesRandom RandomizeFromArray(ArrayList ar) { int index; object [] array = (object [])ar.ToArray(typeof(object)); ArrayListIndicesRandom elements = new ArrayListIndicesRandom(ar.Count); int left = ar.Count; elements.Clear(); // Generate a random number that can be as big as the maximum -1 // Add the random element picked up element in the list // The element just randomized gets out of pending list and replaced by the maximum -1 element for (int i = 0; i < ar.Count; i++, left--) { index = random.Next(left); elements.Add((int)array[index]); array[index] = array[left - 1]; } return(elements); }
private ArrayListIndicesRandom RandomizeFromArray(ArrayList ar) { int index; object []array = (object []) ar.ToArray (typeof (object)); ArrayListIndicesRandom elements = new ArrayListIndicesRandom (ar.Count); int left = ar.Count; elements.Clear (); // Generate a random number that can be as big as the maximum -1 // Add the random element picked up element in the list // The element just randomized gets out of pending list and replaced by the maximum -1 element for (int i = 0; i < ar.Count; i++, left--) { index = random.Next (left); elements.Add ((int) array[index]); array[index] = array[left - 1]; } return elements; }