/// <summary> /// obte l'index de la opcio correcta /// </summary> /// <param name="c">correccio on buscar</param> /// <returns>index opcio correcte</returns> public static int indexCorrecte(Correccio c) { int idx = 0; while (!c.OpcioCorrecta[idx]) { idx++; } return(idx); }
/// <summary> /// Mostra les opcions d'una pregunta, afegeix un prefix obtingut de l'array abc /// </summary> /// <param name="ss">Correccio d'on obtenir les respostes</param> public static void MostrarOpcions(Correccio ss) { Console.Write("Pregunta: "); Console.Write("{0}\n", ss.pregunta); for (int i = 0; i < ss.opcions.Length; i++) { Console.WriteLine("{0} {1}", abc[i], ss.opcions[i]); //Console.WriteLine("{0} {1}", abc[i], ss.OpcioCorrecta[i]); } }
/// <summary> /// Barreja les opcions d'una correccio /// </summary> /// <param name="arr">Correccio de la qual es volen barrejar les opcions</param> /// <returns>Correccio amb les opcions barrejades</returns> public static Correccio RandomizeOptions(Correccio arr) { List <KeyValuePair <int, string> > list = new List <KeyValuePair <int, string> >(); List <KeyValuePair <int, bool> > list2 = new List <KeyValuePair <int, bool> >(); string[] result = new string[arr.opcions.Length]; bool[] result2 = new bool[arr.OpcioCorrecta.Length]; int index; for (int i = 0; i < arr.opcions.Length; i++) { int x = _random.Next(); list.Add(new KeyValuePair <int, string>(x, arr.opcions[i])); list2.Add(new KeyValuePair <int, bool>(x, arr.OpcioCorrecta[i])); } var sorted = from item in list orderby item.Key select item; var sorted2 = from item in list2 orderby item.Key select item; index = 0; foreach (KeyValuePair <int, string> pair in sorted) { result[index] = pair.Value; index++; } arr.opcions = result; index = 0; foreach (KeyValuePair <int, bool> pair in sorted2) { result2[index] = pair.Value; index++; } arr.OpcioCorrecta = result2; return(arr); }
/// <summary> /// Demana una resposta i comprova si és correcta /// </summary> /// <param name="c">Aqui entrem la correccio de la pregunta</param> /// <returns>true correcte, false incorrecte</returns> public static bool RecollirResposta(Correccio c) { bool correcte = false, fet = false; int tecla; Console.Write("Resposta: "); do { tecla = (int)Console.ReadKey().Key - 65; Console.WriteLine(); try { correcte = c.OpcioCorrecta[tecla]; opcio = c.opcions[tecla]; fet = true; } catch { Console.WriteLine("Opcio incorrecta"); } } while (!fet); return(correcte); }
/// <summary> /// Aquesta funcio fa una pregunta, barreja les opcions i recull la resposta /// </summary> /// <param name="c">Aqui entrem la correccio de la pregunta</param> /// <returns>true correcte, false incorrecte</returns> public static bool FerPregunta(Correccio c) { c = RandomizeOptions(c); MostrarOpcions(c); return(RecollirResposta(c)); }