ENIB 2023 : Les petits voyageurs
Sommaire
Les petits voyageurs:
Description courte
Résoudre une énigme faisant deviner un pays.
Déplacer le capteur de couleur dans le labyrinthe pour faire une suite de couleur correspondant au drapeau du pays.
Matériels et machines utilisés
- plaque de bois de 30cm x 30cm
- 2 boutons poussoirs
- 1 capteur RGB TCS3200
- carte Arduino
- cartons ( pour créer le prototype)
- câbles Dupont
- plaque de Cork de 30cm x 30cm
- colle à bois
- peintures et pinceaux
- cutter
- pic à broque
- scotch
- découpeuse laser
- poste à souder
Réalisation
Etape 1: Souder les composants si nécessaires.
Etape 2: Créer les énigmes. Ci dessous la liste de nos énigmes Fichier:Liste des énigmes.docx
Etape 3: Ecrire le code. (cf code ci dessous)
Etape 4: Etablir un plan du labyrinthe.
Etape 5: Faire un prototype du labyrinthe en carton.
Etape 6: tracer le labyrinthe sur la plaque de bois.
Etape 7: Sur inskape, creer un fichier avec toutes les murs du labyrinthe qui doivent être découpés / graver.
Etape 8:
Découper et graver les murs du labyrinthe à la découpe laser.
Etape 9: Peindre certaines cases du labyrinthe en fonction des couleurs nécessaires. Astuce : Mettre du scotch pour avoir des bords lisses
Etape 10: A l'aide de la colle à bois, coller les murs du labyrinthe.
Code
prog.cpp:
#include "color.hpp" #include "enigme.hpp" #include <iostream> #include <random> #include <vector> int main() { //variable initiale int erreur=-1; int test=1; int bonneReponse=0; //liste des couleurs disponible pour les drapeaux deb::Color rouge{1024, 0, 0}; deb::Color bleu{0, 0, 1024}; deb::Color blanc{1024, 1024, 1024}; deb::Color noir{0, 0, 0}; deb::Color vert{0, 1024 ,0}; deb::Color orange{0, 0, 1024}; deb::Color jaune{0, 0, 1024}; //liste des enigmes deb::Enigme ea{bleu, blanc, rouge, "Pays du champagne"}; deb::Enigme eb{vert, blanc, rouge, "Pays des pâtes"}; deb::Enigme ec{vert, blanc, orange, "Pays des moutons "}; deb::Enigme ed{rouge, blanc, rouge, "Pays d’origine de Marie Antoinette"}; deb::Enigme ee{noir, rouge, jaune, "Pays d’origine des knödels "}; deb::Enigme ef{jaune, vert, rouge, "Quel est ce pays ? Mjubojf"}; deb::Enigme eg{rouge, blanc, bleu, "Quel est ce pays ? .-.. ..- -..- . -- -... --- ..- .-. --."}; deb::Enigme eh{rouge, blanc, bleu, "Quel est ce pays ? Ozxr-Azr"}; deb::Enigme ei{noir, jaune, rouge, "Pays de la gaufre"}; deb::Enigme ej{vert, jaune, bleu, "Mon premier est un mec. Mon second qualifie quelque chose d’agréable."}; deb::Enigme ek{blanc, bleu, noir, "Quel est ce pays ? . ... - --- -. .. ."}; deb::Enigme el{rouge, blanc, rouge, "Quel est ce pays ? 53886643"}; deb::Enigme em{rouge, blanc, vert, "Mon premier est un pronom personnel indéfini. Mon second contient autant de rouge que de vert que de bleu."}; deb::Enigme en{bleu, jaune, rouge, "Quel est ce pays ? Spvnbojf"}; deb::Enigme eo{bleu, jaune, rouge, "Ma capitale est vieille "}; deb::Enigme ep{bleu, jaune, rouge, "Quel est ce pays ? - -.-. .... .- -.."}; deb::Enigme eq{rouge, bleu, orange, "Son papier sent bon "}; deb::Enigme er{bleu, rouge, vert, "Quel est ce pays ? 2937224526"}; deb::Enigme es{rouge, jaune, vert, "Ma capitale est La Paz"}; deb::Enigme et{rouge, jaune, vert, "Mon premier est la plante sous laquelle il faut s’embrasser. Mon second est l’arrivée en ce monde."}; deb::Enigme eu{blanc, vert, rouge, "Mon premier est une sphère d’une substance dans une autre. Mon second est un mec. Mon troisième peut être cantonais, thai ou basmati. "}; deb::Enigme ev{jaune, bleu, rouge, "Ma capitale est Bogota"}; deb::Enigme ew{orange, blanc, vert, "Quel est ce pays ? Dpuf e’Jwpjsf"}; deb::Enigme ex{vert, jaune, rouge, "Quel est ce pays ? -- .- .-.. .."}; deb::Enigme ey{vert, blanc, vert, "Quel est ce pays ? 6443742"}; deb::Enigme ez{rouge, blanc, rouge, "Pays du Macchu Picchu"}; deb::Enigme eea{blanc, bleu, rouge, "Pays du Kremlin"}; deb::Enigme eeb{rouge, blanc, noir, "Quel est ce pays ? Xdldm"}; std::vector<deb::Enigme> vectEnigme{ea,eb,ec,ed,ee,ef,eg,eh,ei,ej,ek,el,em,en,eo,ep,eq,er,es,et,eu,ev,ew,ex,ez,eea,eeb}; //loop if (appui sur bouton acquisition) //on enregistre la couleur actuelle { int a,b,c = 10,10,1024; //on recupere les valeurs du capteur if (test==4) { bonneReponse=0; //il y a trop de reponse le resultat sera faut } if (test==3) { if (enigmeEnCours.trois.isitme(a,b,c)) {bonneReponse=bonneReponse+1} //on compare a la couleur du drapeau test=4; } if (test==2) { if (enigmeEnCours.deux.isitme(a,b,c)) {bonneReponse=bonneReponse+1} //on compare a la couleur du drapeau test=3; } if (test==1) { if (enigmeEnCours.un.isitme(a,b,c)) {bonneReponse=bonneReponse+1} //on compare a la couleur du drapeau test=2; } } if (appui sur le bouton validé and erreur!=-1)//on regarde le resultat final { if (bonneReponse==3) { std::cout <<"Victoire ! Si tu veux rejouer, clique sur JSP.\n"; erreur =-1; } if (bonneReponse!=3 and erreur==0) { std::cout <<"Tu as fait une erreur. Repars de zéro et essaye encore. \n"; erreur =1; } if (bonneReponse!=3 and erreur==1) { std::cout <<"Tu as perdu. Si tu veux rejouer, clique sur JSP.\n"; erreur =-1; } } if (appui sur bouton validé and erreur==-1) //lancement nouvelle enigme { srand((unsigned) time(NULL)); deb::Enigme enigmeEnCours=vectEnigme[rand() % 28]; std::cout << enigmeEnCours.question << "\n"; erreur=0; test=1; bonneReponse=0; } }
color.cpp:
//---------------------------------------------------------------------------- #include "color.hpp" namespace deb { bool Color::isitme(int r,int g,int b) const { if (r<(red-200)) {return false;} if (r>(red+200)) {return false;} if (g<(green-200)) {return false;} if (g>(green+200)) {return false;} if (b<(blue-200)) {return false;} if (b>(blue+200)) {return false;} return true; } }// namespace deb //----------------------------------------------------------------------------
color.hpp:
//---------------------------------------------------------------------------- #ifndef DEB_COLOR_HPP #define DEB_COLOR_HPP #include <iostream> namespace deb { struct Color { int red,green,blue; Color(int red, int green, int blue): red{std::move(red)}, green{std::move(green)}, blue{std::move(blue)} {/* nothing to do */} bool isitme(int r,int g,int b) const; }; } // namespace deb #endif // DEB_COLOR_HPP //----------------------------------------------------------------------------
enigme.hpp
//---------------------------------------------------------------------------- #ifndef DEB_ENIGME_HPP #define DEB_ENIGME_HPP #include <iostream> #include <string> #include "color.hpp" namespace deb { struct Enigme { Color un,deux,trois; std::string question; Enigme(Color u, Color d, Color t, std::string q): un{std::move(u)}, deux{std::move(d)}, trois{std::move(t)}, question{std::move(q)} {/* nothing to do */} }; } // namespace deb #endif // DEB_ENIGME_HPP //----------------------------------------------------------------------------