Ejemplo n.º 1
0
        private const string CHEMIN_FICHIER = @"..\..\..\QCM.txt"; // Nous declarons le chemin du fichier comme une constante privée

        /// <summary>
        /// Methode statique GetQuestions : qui lit le fichier QCM.txt et renvoie une liste<QuestionQCM>
        /// chaque instance de <QuestionQCM> contient la question,la reponse, les possibilités de réponse et le numéro  de la question
        /// </summary>
        /// <returns></returns>
        public static List <QuestionQCM> GetQuestions()
        {
            var liste          = new List <QuestionQCM>();
            var donnéesFichier = File.ReadAllLines(CHEMIN_FICHIER);
            int _indQ          = 0;                         // Compteur Question initialisé a 0

            for (int i = 0; i < donnéesFichier.Length; i++) // Parcourir les lignes du fichier QCM.txt
            {
                string phrase = donnéesFichier[i];          // Chaque phrase correspond a la ligne du fichier

                if (phrase.Contains("Question"))            // Si la phrase contient le mot Question on instancie l'objet QuestionQCM
                {
                    _indQ++;
                    QuestionQCM q = new QuestionQCM(_indQ);         //on instancie l'objet QuestionQCM
                    liste.Add(q);                                   //on le rajoute dans la liste<QuestionQCM>
                    liste[_indQ - 1].TextQuestion += phrase + '\n'; // textQuestion correspond au texte de la question
                }

                if (phrase.Length > 0 && phrase[0] != 'Q' &&
                    (phrase[0] >= 65 && phrase[0] <= 90 || phrase[0] == '*')
                    )                                                                       // Nous testons si la phrase ne contiens pas le mot "Question" :
                {
                    if (phrase[0] == '*')                                                   // Si la phrase contient '*' ,c'est une bonne réponse
                    {
                        liste[_indQ - 1].TextQuestion        += phrase.Substring(1) + '\n'; // nous rajouttons la phase sans l'*' dans le TextQuestion
                        liste[_indQ - 1].RéponseQuestion     += phrase[1];                  //on rajoute la lettre qui suit l'*' dans RéponseQuestion
                        liste[_indQ - 1].PossibilitésRéponse += phrase[1];                  //on rajoute la lettre qui suit l'*' dans PossibilitéRéponse
                    }
                    else // Le cas inverse ,
                    {
                        liste[_indQ - 1].TextQuestion        += phrase + '\n'; //nous rajouttons la phase  dans le TextQuestion
                        liste[_indQ - 1].PossibilitésRéponse += phrase[0];     //on rajoute la premiere lettre dans PossibilitéRéponse
                    }
                }
            }
            return(liste); // on retourne la liste qui contient toutes les questions et leurs propriétés
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Methode qui permets de tester la reponse du joueur en prenant en compte la reponse et la question(i) ; question (i) est une instance de QuestionQCM
 /// </summary>
 /// <param La reponse du joueur="reponse"></param>
 /// <param une instance de QuestionQCM ="question"></param>
 public void TesterRéponse(string reponse, QuestionQCM question)
 {
     if (reponse.Length == 0) // si le joueur ne répond pas à la question , nous levons une exception
     {
         throw new FormatException("Le format de la réponse est incorrecte vous devez choisir des lettres parmis celles qui sont proposées");
     }
     for (int i = 0; i < reponse.Length; i++) // si la réponse n'est pas dans les possibilité de réponse , nous levons une exception
     {
         if (!question.PossibilitésRéponse.Contains(reponse[i]))
         {
             throw new FormatException("Le format de la réponse est incorrecte vous devez choisir des lettres parmis celles qui sont proposées");
         }
     }
     if (string.Concat(reponse.OrderBy(c => c)) == question.RéponseQuestion) // si la réponse est correcte , nous incrémontons son score et le nombre des questions
     {
         NombreQuestions++;
         Score++;
     }
     else // Le cas inverse : Nous rajoutons le numéro de la question dans la liste des erreurs et on incrémonte le nombre des questions
     {
         NombreQuestions++;
         Erreurs.Add(question.Numéro);
     }
 }