#include "bdd.h" #include "ecran.h" #include "bouton.h" #include #include #include #include using namespace std; // Tableau avec les réponses aux questions par catégorie // 1 = VRAI et 0 = FAUX int reponses_disney[] = { 0, 1, 0 }; int reponses_geographie[] = { 0, 1, 1 }; int reponses_sciences[] = { 1, 0, 1 }; int reponses_culture[] = { 1, 1, 1 }; int reponses_animaux[] = { 0, 0, 1 }; void defileTexte(ecran &lcd, String texte) { int largeur = 32; texte += " "; int longueur = texte.length(); int pos = 0; while (pos <= longueur - largeur) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(texte.substring(pos, pos + largeur)); delay(400); pos++; } } void listequestions_init(ecran &lcd, bouton &boutonRelief, bouton &boutonPlat) { list listeQ; //Crée la liste de thèmes list::iterator it; //Déclare un iterateur //Pousse les thème dans une liste listeQ.push_back("Disney"); listeQ.push_back("Geographie"); listeQ.push_back("Sciences"); listeQ.push_back("Culture Generale"); listeQ.push_back("Animaux"); int nbT = listeQ.size(); int TActuel = 0; lcd.clear(); //Nettoie l'écran //Affiche les thèmes lcd.print("Thematiques : "); delay(1000); // Navigue dans les thèmes bool TChoisi = false; while (!TChoisi) { //Affiche le thème actuel it = listeQ.begin(); advance(it, TActuel); lcd.setCursor(0, 1); lcd.print((*it).c_str()); delay(2000); //Affiche les instruction par bouton lcd.clear(); lcd.setCursor(0, 0); lcd.print(String(TActuel + 1) + (*it).c_str()); lcd.setCursor(0, 1); lcd.print("Relief=OK, Plat=>"); delay(1000); // Attends la réponse de l'utilisateur bool choixUtilisateur = choix_bouton(boutonRelief, boutonPlat); if (choixUtilisateur == 1) { // Bouton Relief = Valider le thème TChoisi = true; } else { // Bouton Plat = Passer au thème suivant TActuel = (TActuel + 1) % nbT; //permet de revenir au premier thème si aucun n'a été choisi } } //Banque de questions pour le thème Disney list Questions_Disney; Questions_Disney.push_back("Patrick est le nom du cameleon de Raiponce ?"); Questions_Disney.push_back("La robe de Tiana est verte ?"); Questions_Disney.push_back("Cendrillon etait le premier disney ?"); //Banque de questions pour le thème Geographie list Questions_Geographie; Questions_Geographie.push_back("Rio de Janeiro est la capitale du Bresil ?"); Questions_Geographie.push_back("L'Inde est le pays le plus peuple ?"); Questions_Geographie.push_back("Les Pyrenees Atlantiques ont 64 en numéro de département ?"); //Banque de questions pour le thème Sciences list Questions_Sciences; Questions_Geographie.push_back("Le corps humain contient assez de fer pour faire un clou ?"); Questions_Geographie.push_back("Les cheveux continuent de pousser après la mort ?"); Questions_Geographie.push_back("Le cerveau ne ressent pas la douleur?"); //Banque de questions pour le thème Culture Générale list Questions_Culture_G; Questions_Geographie.push_back("Le Soleil est une étoile ?"); Questions_Geographie.push_back("Le français est parlé sur tous les continents ?"); Questions_Geographie.push_back("Les Romains utilisaient déjà le béton ?"); //Banque de questions pour le thème Animaux list Questions_Animaux; Questions_Geographie.push_back("Les requins doivent nager en permanence pour survivre ?"); Questions_Geographie.push_back("Les chauves-souris sont aveugles ?"); Questions_Geographie.push_back("Les poissons dorment ?"); // Lance le quiz selon le thème choisi lcd.clear(); switch (TActuel) { case 0: lcd.print("Disney"); delay(2000); play(lcd, Questions_Disney, reponses_disney, boutonRelief, boutonPlat); break; case 1: lcd.print("Geographie"); delay(2000); play(lcd, Questions_Geographie, reponses_geographie, boutonRelief, boutonPlat); break; case 2: lcd.print("Sciences"); delay(2000); play(lcd, Questions_Sciences, reponses_sciences, boutonRelief, boutonPlat); break; case 3: lcd.print("Culture Generale"); delay(2000); play(lcd, Questions_Culture_G, reponses_culture, boutonRelief, boutonPlat); break; case 4: lcd.print("Animaux"); delay(2000); play(lcd, Questions_Animaux, reponses_animaux, boutonRelief, boutonPlat); break; } } void play(ecran &lcd, list Questions, int reponses[], bouton &boutonRelief, bouton &boutonPlat) { int score = 0; int questionNum = 0; list::iterator it; // Permet de parcourir toutes les questions for (it = Questions.begin(); it != Questions.end(); it++) { lcd.clear(); //Nettoie l'écran // Affiche le numéro de la question lcd.setCursor(0, 0); lcd.print("Q" + String(questionNum + 1) + ": "); delay(1000); lcd.clear(); //Nettoie l'écran //Faire défiler la question defileTexte(lcd, (*it).c_str()); delay(1500); // Affiche les choix pour l'utilisateur lcd.clear(); lcd.setCursor(0, 0); lcd.print("Relief=Vrai"); lcd.setCursor(0, 1); lcd.print("Plat=Faux"); delay(1000); // Attends la réponse de l'utilisateur bool reponseUtilisateur = choix_bouton(boutonRelief, boutonPlat); // Vérifie la réponse (1 pour boutonRelief/Vrai, 0 pour boutonPlat/Faux) if (reponseUtilisateur == reponses[questionNum]) { lcd.clear(); lcd.print("Correct !"); score++; } else { lcd.clear(); lcd.print("Faux !"); } delay(2000); questionNum++; } // Afficher le score final lcd.clear(); lcd.setCursor(0, 0); lcd.print("Score: " + String(score) + "/" + String(questionNum)); lcd.setCursor(0, 1); lcd.print("Bravo !"); delay(5000); }