예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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]);
     }
 }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
 /// <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));
 }