#include "bdd.h" #include "ecran.h" #include "bouton.h" #include "led.h" #include #include #include #include bool gameOver = false; using namespace std; int nb_erreurs = 0; // Tableau avec les réponses aux questions par catégorie // 1 = VRAI et 0 = FAUX int reponses_disney[] = { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0 }; int reponses_geographie[] = { 1, 1, 0, 1, 1, 1, 0, 0, 1, 0 }; int reponses_sciences[] = { 1, 0, 1, 0, 1, 1, 0, 0, 1, 0 }; int reponses_culture_g[] = { 1, 1, 1, 0, 1, 0, 0, 1, 0, 1 }; int reponses_animaux[] = { 1, 0, 1, 1, 0, 1, 1, 1, 0, 0 }; 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,led &ledRouge) { 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 instructions 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); lcd.clear(); 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 theme Disney list Questions_Disney = { "Mickey est une souris ?", "Patrick est le nom du cameleon dans Raiponce ?", "La robe de Tiana est verte ?", "Simba est un lion ?", "Elsa est la soeur d Anna ?", "Aladdin se passe en Chine ?", "Cendrillon perd une pantoufle en verre ?", "Ariel est une sirene ?", "Le Genie est bleu ?", "Bambi est un cochon ?" }; //Banque de questions pour le theme Geographie list Questions_Geographie; Questions_Geographie.push_back("Paris est la capitale de la France ?"); Questions_Geographie.push_back("Le Sahara est le plus grand desert du monde ?"); Questions_Geographie.push_back("Le Bresil parle principalement espagnol ?"); Questions_Geographie.push_back("La Russie est plus grande que la Chine ?"); Questions_Geographie.push_back("L'Europe est un continent ?"); Questions_Geographie.push_back("Le Nil traverse plus de 5 pays ?"); Questions_Geographie.push_back("L'Australie possede une frontiere terrestre ?"); Questions_Geographie.push_back("Le Mont Blanc se situe en Italie ?"); Questions_Geographie.push_back("L'Afrique est traversee par l'equateur ?"); Questions_Geographie.push_back("Tokyo est la capitale de la Coree du Sud ?"); //Banque de questions pour le theme Sciences list Questions_Sciences; Questions_Sciences.push_back("Le corps humain contient assez de fer pour faire un clou ?"); Questions_Sciences.push_back("Les cheveux continuent de pousser apres la mort ?"); Questions_Sciences.push_back("Le cerveau ne ressent pas la douleur ?"); Questions_Sciences.push_back("L'eau bout toujours a 100 degres Celsius ?"); Questions_Sciences.push_back("La Terre tourne autour du Soleil ?"); Questions_Sciences.push_back("Les plantes produisent de l'oxygene ?"); Questions_Sciences.push_back("Les humains utilisent seulement 10% de leur cerveau ?"); Questions_Sciences.push_back("Le son se propage plus vite dans l'air que dans l'eau ?"); Questions_Sciences.push_back("Le sang est rouge a l'interieur du corps ?"); Questions_Sciences.push_back("Les dinosaures ont vecu en meme temps que les humains ?"); //Banque de questions pour le theme Culture Generale list Questions_Culture_G; Questions_Culture_G.push_back("Le Soleil est une etoile ?"); Questions_Culture_G.push_back("Le francais est parle sur tous les continents ?"); Questions_Culture_G.push_back("Les Romains utilisaient deja le beton ?"); Questions_Culture_G.push_back("La Tour Eiffel a ete construite au XXe siecle ?"); Questions_Culture_G.push_back("L'eau est composee de deux atomes d'hydrogene et d'un atome d'oxygene ?"); Questions_Culture_G.push_back("Napoleon Bonaparte etait italien ?"); Questions_Culture_G.push_back("Le pingouin peut voler ?"); Questions_Culture_G.push_back("La Joconde est exposee au Louvre ?"); Questions_Culture_G.push_back("Le zero a ete invente avant les chiffres romains ?"); Questions_Culture_G.push_back("La Lune influence les marees ?"); //Banque de questions pour le theme Animaux list Questions_Animaux; Questions_Animaux.push_back("Les requins doivent nager en permanence pour survivre ?"); Questions_Animaux.push_back("Les chauves-souris sont aveugles ?"); Questions_Animaux.push_back("Les poissons dorment ?"); Questions_Animaux.push_back("Les dauphins sont des mammiferes ?"); Questions_Animaux.push_back("Les autruches peuvent voler ?"); Questions_Animaux.push_back("Les elephants ont une excellente memoire ?"); Questions_Animaux.push_back("Le koala est un marsupial ?"); Questions_Animaux.push_back("Les pieuvres ont trois coeurs ?"); Questions_Animaux.push_back("Le cameleon change de couleur pour se camoufler uniquement ?"); Questions_Animaux.push_back("Les grenouilles respirent uniquement avec leurs poumons ?"); // 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, ledRouge); break; case 1: lcd.print("Geographie"); delay(2000); play(lcd, Questions_Geographie, reponses_geographie, boutonRelief, boutonPlat, ledRouge); break; case 2: lcd.print("Sciences"); delay(2000); play(lcd, Questions_Sciences, reponses_sciences, boutonRelief, boutonPlat, ledRouge); break; case 3: lcd.print("Culture Generale"); delay(2000); play(lcd, Questions_Culture_G, reponses_culture_g, boutonRelief, boutonPlat, ledRouge); break; case 4: lcd.print("Animaux"); delay(2000); play(lcd, Questions_Animaux, reponses_animaux, boutonRelief, boutonPlat, ledRouge); break; } } void play(ecran &lcd, list Questions, int reponses[], bouton &boutonRelief, bouton &boutonPlat, led &ledRouge) { 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("Erreur !"); lcd.setCursor(0, 1); nb_erreurs++; lcd.print(String("Nb err: ") + nb_erreurs); ledRouge.cligno(); if (nb_erreurs == 3) { gameOver = true; return; } } 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); }