ENIB 2023 : Les petits voyageurs

De Les Fabriques du Ponant
Révision datée du 26 janvier 2023 à 14:45 par L0cazard (discussion | contributions) (Code)
Aller à : navigation, rechercher

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
  • découpeuse laser
  • poste à souder
  • pistolet a colle

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.

Petits voyageurs 1.jpg

Etape 5: Faire un prototype du labyrinthe en carton.

Petit voyageurs2.jpg

Etape 6: tracer le labyrinthe sur la plaque de bois.

Petit voyageurs3.jpg

Etape 7: Sur inskape, creer un fichier avec toutes les murs du labyrinthe qui doivent être découpés / graver.

téléchargez le svg


Etape 8: Découper et graver les murs du labyrinthe à la découpe laser.

Murs.jpeg

Etape 9: Peindre certaines cases du labyrinthe en fonction des couleurs nécessaires. Astuce : Mettre du scotch pour avoir des bords lisses

Peinture.jpeg —> Peinture2.jpeg


Etape 10: A l'aide de la colle à bois, coller les murs du labyrinthe.

Colle1.jpeg —> Colle2.jpeg


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:

</pre>


//----------------------------------------------------------------------------

  1. 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

//---------------------------------------------------------------------------- </pre>

color.hpp: </pre>

//----------------------------------------------------------------------------

  1. ifndef DEB_COLOR_HPP
  2. define DEB_COLOR_HPP
  1. 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

  1. endif // DEB_COLOR_HPP

//----------------------------------------------------------------------------


</pre>


enigme.hpp

</pre>


//----------------------------------------------------------------------------

  1. ifndef DEB_ENIGME_HPP
  2. define DEB_ENIGME_HPP
  1. include <iostream>
  2. include <string>
  3. 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

  1. endif // DEB_ENIGME_HPP

//----------------------------------------------------------------------------


</pre>

Catégories