version finale
This commit is contained in:
parent
077992fa7b
commit
9646d260cb
8 changed files with 148 additions and 68 deletions
|
|
@ -11,9 +11,10 @@
|
|||
#include "bouton.h"
|
||||
#define buttonPinRelief D8
|
||||
#define buttonPinPlat D6
|
||||
#define ledRougePin D7
|
||||
|
||||
Application::Application()
|
||||
: ledPin(D7), colorR(255), colorG(100), colorB(100), boutonRelief(buttonPinRelief), boutonPlat(buttonPinPlat) {}
|
||||
: ledPin(D7), colorR(255), colorG(100), colorB(100), boutonRelief(buttonPinRelief), boutonPlat(buttonPinPlat), ledRouge(ledRougePin){}
|
||||
|
||||
Application::~Application() {
|
||||
/*if (boutonRelief != nullptr) {
|
||||
|
|
@ -37,9 +38,17 @@ void Application::init(void) {
|
|||
|
||||
|
||||
void Application::run(void) {
|
||||
gameOver = false;
|
||||
nb_erreurs = 0;
|
||||
lcd.clear();
|
||||
lcd.print("On commence a jouer?");
|
||||
lcd.print("C'est parti !");
|
||||
delay(1500);
|
||||
listequestions_init(lcd, boutonRelief, boutonPlat);
|
||||
listequestions_init(lcd, boutonRelief, boutonPlat,ledRouge);
|
||||
delay(100);
|
||||
if (gameOver) {
|
||||
lcd.clear();
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print("GAME OVER");
|
||||
delay(5000);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
/*********************************************************************
|
||||
* @file Apllication.h
|
||||
* @author <mettre l'adresse mail ou nom prenom>
|
||||
* @brief Fichier header de l'application
|
||||
* @author Montaigu Emilie, Ouvrard Marine
|
||||
* @brief Fichier source de l'application
|
||||
*********************************************************************/
|
||||
#ifndef APPLICATION_H_
|
||||
#define APPLICATION_H_
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
#include "ecran.h"
|
||||
#include "bdd.h"
|
||||
#include "bouton.h"
|
||||
#include "led.h"
|
||||
/**
|
||||
* @class Application
|
||||
* @brief Classe Application
|
||||
|
|
@ -22,6 +23,7 @@ public:
|
|||
ecran lcd;
|
||||
bouton boutonRelief;
|
||||
bouton boutonPlat;
|
||||
led ledRouge;
|
||||
/**
|
||||
* @fn Application();
|
||||
* @brief Constructeur par defaut
|
||||
|
|
|
|||
|
|
@ -1,20 +1,21 @@
|
|||
#include "bdd.h"
|
||||
#include "ecran.h"
|
||||
#include "bouton.h"
|
||||
#include "led.h"
|
||||
#include <iostream>
|
||||
#include <list>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
|
||||
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[] = { 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 };
|
||||
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;
|
||||
|
|
@ -31,7 +32,7 @@ void defileTexte(ecran &lcd, String texte) {
|
|||
}
|
||||
}
|
||||
|
||||
void listequestions_init(ecran &lcd, bouton &boutonRelief, bouton &boutonPlat) {
|
||||
void listequestions_init(ecran &lcd, bouton &boutonRelief, bouton &boutonPlat,led &ledRouge) {
|
||||
list<string> listeQ; //Crée la liste de thèmes
|
||||
list<string>::iterator it; //Déclare un iterateur
|
||||
//Pousse les thème dans une liste
|
||||
|
|
@ -58,20 +59,21 @@ void listequestions_init(ecran &lcd, bouton &boutonRelief, bouton &boutonPlat) {
|
|||
//Affiche le thème actuel
|
||||
it = listeQ.begin();
|
||||
advance(it, TActuel);
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print((*it).c_str());
|
||||
delay(2000);
|
||||
//lcd.setCursor(0, 1);
|
||||
//lcd.print((*it).c_str());
|
||||
//delay(2000);
|
||||
|
||||
//Affiche les instruction par bouton
|
||||
//Affiche les instructions par bouton
|
||||
lcd.clear();
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print(String(TActuel + 1) + (*it).c_str());
|
||||
lcd.print(String(TActuel + 1) + " " + (*it).c_str());
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print("Relief=OK, Plat=>");
|
||||
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
|
||||
|
|
@ -82,35 +84,69 @@ void listequestions_init(ecran &lcd, bouton &boutonRelief, bouton &boutonPlat) {
|
|||
}
|
||||
}
|
||||
|
||||
//Banque de questions pour le thème Disney
|
||||
list<string> 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 theme Disney
|
||||
list<string> 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 thème Geographie
|
||||
//Banque de questions pour le theme Geographie
|
||||
list<string> 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 ?");
|
||||
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 thème Sciences
|
||||
//Banque de questions pour le theme Sciences
|
||||
list<string> 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?");
|
||||
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 thème Culture Générale
|
||||
//Banque de questions pour le theme Culture Generale
|
||||
list<string> 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 ?");
|
||||
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 thème Animaux
|
||||
//Banque de questions pour le theme Animaux
|
||||
list<string> 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 ?");
|
||||
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();
|
||||
|
|
@ -118,32 +154,32 @@ void listequestions_init(ecran &lcd, bouton &boutonRelief, bouton &boutonPlat) {
|
|||
case 0:
|
||||
lcd.print("Disney");
|
||||
delay(2000);
|
||||
play(lcd, Questions_Disney, reponses_disney, boutonRelief, boutonPlat);
|
||||
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);
|
||||
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);
|
||||
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, boutonRelief, boutonPlat);
|
||||
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);
|
||||
play(lcd, Questions_Animaux, reponses_animaux, boutonRelief, boutonPlat, ledRouge);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void play(ecran &lcd, list<string> Questions, int reponses[], bouton &boutonRelief, bouton &boutonPlat) {
|
||||
void play(ecran &lcd, list<string> Questions, int reponses[], bouton &boutonRelief, bouton &boutonPlat, led &ledRouge) {
|
||||
int score = 0;
|
||||
int questionNum = 0;
|
||||
list<string>::iterator it;
|
||||
|
|
@ -181,7 +217,16 @@ void play(ecran &lcd, list<string> Questions, int reponses[], bouton &boutonReli
|
|||
score++;
|
||||
} else {
|
||||
lcd.clear();
|
||||
lcd.print("Faux !");
|
||||
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);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
#ifndef bdd_H
|
||||
#define bdd_H
|
||||
#include "ecran.h"
|
||||
#include "led.h"
|
||||
#include "bouton.h"
|
||||
#include <list>
|
||||
#include <string>
|
||||
|
||||
extern bool gameOver;
|
||||
extern int nb_erreurs;
|
||||
using namespace std;
|
||||
|
||||
//Permet de faire défiler le texte sur l'écran
|
||||
|
|
@ -12,9 +14,9 @@ using namespace std;
|
|||
void defileTexte(ecran &lcd, String texte);
|
||||
|
||||
// Affiche les thèmes disponibles et lance le quiz correspondant
|
||||
void listequestions_init(ecran &lcd, bouton &boutonRelief, bouton &boutonPlat);
|
||||
void listequestions_init(ecran &lcd, bouton &boutonRelief, bouton &boutonPlat, led &ledRouge);
|
||||
|
||||
//Fonction principale pour jouer à un quiz
|
||||
void play(ecran &lcd, list<string> Questions, int reponses[], bouton &boutonRelief, bouton &boutonPlat);
|
||||
void play(ecran &lcd, list<string> Questions, int reponses[], bouton &boutonRelief, bouton &boutonPlat, led &ledRouge);
|
||||
|
||||
#endif
|
||||
|
|
@ -8,45 +8,49 @@ bouton::bouton()
|
|||
bouton::bouton(int pin)
|
||||
: capteur(pin), etat(0) {}
|
||||
|
||||
//ccesseur de etat
|
||||
//Accesseur de etat
|
||||
bool bouton::lire_etat() {
|
||||
bool res;
|
||||
int buttonState = digitalRead(this->getpin());
|
||||
if (buttonState == HIGH) res = 1;
|
||||
else res = 0;
|
||||
return res;
|
||||
if (buttonState == HIGH) {
|
||||
this->etat = 1; // Met à jour etat
|
||||
} else {
|
||||
this->etat = 0; // Met à jour etat
|
||||
}
|
||||
return this->etat;
|
||||
}
|
||||
|
||||
// Redéfinition de l'opérateur
|
||||
bool bouton::operator!() const {
|
||||
return this->etat == 0;
|
||||
}
|
||||
|
||||
bool choix_bouton(bouton &Brelief, bouton &Bplat) {
|
||||
|
||||
Serial.println("A"); //a enlever
|
||||
|
||||
//Attends que les 2 bouttons soient relachés
|
||||
while (Brelief.lire_etat() == 1 || Bplat.lire_etat() == 1) {
|
||||
while (!(!Brelief) || !(!Bplat)) {
|
||||
Brelief.lire_etat();
|
||||
Bplat.lire_etat();
|
||||
delay(10);
|
||||
}
|
||||
Serial.println("A"); //a enlever
|
||||
|
||||
//Attends que l'un des boutons soit appuyé
|
||||
while (Brelief.lire_etat() == 0 && Bplat.lire_etat() == 0) {
|
||||
while (!Brelief && !Bplat) {
|
||||
Brelief.lire_etat();
|
||||
Bplat.lire_etat();
|
||||
delay(10);
|
||||
}
|
||||
|
||||
//Stocke l'état des boutons
|
||||
bool reliefPresse = Brelief.lire_etat();
|
||||
bool platPresse = Bplat.lire_etat();
|
||||
|
||||
Serial.println("A"); //a enlever
|
||||
|
||||
//Boucle qui renvoie 1 si bouton relief et renvoie 0 si bouton plat
|
||||
if (reliefPresse) {
|
||||
Serial.println("A");
|
||||
while (Brelief.lire_etat() == 1) {
|
||||
delay(10);
|
||||
}
|
||||
return 1;
|
||||
} else if (platPresse) {
|
||||
Serial.println("A");
|
||||
while (Bplat.lire_etat() == 1) {
|
||||
delay(10);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ public:
|
|||
bouton();
|
||||
bouton(int pin);
|
||||
bool lire_etat(); //Accesseur de etat
|
||||
bool operator!() const;
|
||||
};
|
||||
|
||||
//Renvoie 1 si bouton relief et renvoie 0 si bouton plat
|
||||
|
|
|
|||
|
|
@ -1,10 +1,24 @@
|
|||
#include "led.h"
|
||||
#include <Arduino.h>
|
||||
|
||||
//Constructeur
|
||||
led::led()
|
||||
: actionneur(), pin(0), etat(0) {}
|
||||
//Constructeur par defaut
|
||||
led::led() : actionneur(), pin(0), etat(0) {}
|
||||
|
||||
// Constructeur avec pin
|
||||
led::led(int p) : actionneur(), pin(p), etat(0) {}
|
||||
|
||||
// Getter pour le pin
|
||||
int led::getPin() const {
|
||||
return this->pin;
|
||||
}
|
||||
|
||||
//Initialise la LED en OUTPUT
|
||||
void led::init() {
|
||||
pinMode(pin, OUTPUT);
|
||||
pinMode(this->pin, OUTPUT);
|
||||
}
|
||||
|
||||
void led::cligno() {
|
||||
digitalWrite(this->pin, HIGH);
|
||||
delay(3000);
|
||||
digitalWrite(this->pin, LOW);
|
||||
}
|
||||
|
|
@ -9,7 +9,10 @@ private:
|
|||
bool etat;
|
||||
public:
|
||||
led();
|
||||
led(int p);
|
||||
void init(void); //Initialise la LED en OUTPUT
|
||||
void cligno(void);
|
||||
int getPin() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Reference in a new issue