antoine.perederii 2 years ago
commit 13736bec78

Binary file not shown.

@ -52,6 +52,7 @@ namespace personnage {
void Barmen::servirVerre(const Humain & humain) const {
this->parler("Et voilà pour toi " + humain.getNom() +"un verre de "
+ humain.getBoisson());
humain.boire();
}
}

@ -6,34 +6,70 @@
using namespace std;
namespace personnage {
/**
* @brief Construct a new Indien:: Indien object
*
* @param nom
* @param boisson
* @param nbPlumes
* @param totem
*/
Indien::Indien(const string &nom, const string &boisson, const int nbPlumes, const string &totem)
:Humain(nom, boisson), nbPlumes{nbPlumes}, totem{totem}
{}
/**
* @brief
*
* @return string
*/
string Indien::getNom() const {
return Humain::getNom();
}
/**
* @brief
*
* @param texte
*/
void Indien::parler(const string &texte) const {
Humain::parler(texte + " Ugh !");
}
/**
* @brief
*
*/
void Indien::sePresenter() const {
this->parler("Oyh, moi être " + this->getNom() + " et aimer " + this->getBoisson() + ".");
this->parler("Moi vénérer totem " + this->totem + ". Moi guerrier. Moi avoir " + to_string(this->nbPlumes) + " plumes.");
}
/**
* @brief
*
* @param dame
*/
void Indien::scalper(Dame &dame) {
dame.seFaireScalper(*this);
nbPlumes += 1;
}
/**
* @brief
*
* @param brigand
*/
void Indien::scalper(Brigand &brigand) {
brigand.seFaireScalper(*this);
nbPlumes += 1;
}
/**
* @brief
*
* @param cowboy
*/
void Indien::scalper(Cowboy &cowboy) {
cowboy.seFaireScalper(*this);
nbPlumes+= 1;

@ -1,4 +1,13 @@
#include "humain.hpp"
/**
* @file main.cpp
* @author PEREDERII Antoine
* @brief
* @version 0.1
* @date 2023-03-22
*
* @copyright Copyright (c) 2023
*
*/
#include "dame.hpp"
#include "brigand.hpp"
#include "cowboy.hpp"
@ -9,9 +18,14 @@
#include "indien.hpp"
#include <vector>
#include <algorithm>
using namespace std;
/**
* @brief
*
*/
void testHumain() {
personnage::Humain jacques("Jacques", "biere");
personnage::Humain pierre("Pierre");
@ -23,6 +37,10 @@ void testHumain() {
pierre.parler("C'était bien sympa Jacques, rentrons à la maison maintenant !");
}
/**
* @brief
*
*/
void testDame() {
personnage::Dame rose("Rose");
personnage::Dame ginette("Ginette", "ricard", "noir");
@ -33,6 +51,10 @@ void testDame() {
rose.parler("J'aime les beaux cowboy !");
}
/**
* @brief
*
*/
void testBrigand() {
personnage::Brigand robert("Robert");
personnage::Brigand bernard("Bernard", "aveze", "ronchon", 200);
@ -40,6 +62,11 @@ void testBrigand() {
bernard.sePresenter();
}
/**
* @brief cette methode permet de tester la classe cowboy en créant
* deux cowboy et en les faisant se présenter
*
*/
void testCowboy() {
personnage::Cowboy danny("Danny", "whisky", "magnifique");
personnage::Cowboy george("George");
@ -165,62 +192,109 @@ void testGeneral1() {
void testGeneral2() {
vector<personnage::Humain *> vHumain{
new personnage::Dame("Rose"),
new personnage::Dame("Ginette", "ricard", "noir")}
// {personnage::Brigand robert = new robert("Robert")},
// {personnage::Brigand bernard = new bernard("Bernard", "aveze", "ronchon", 200)},
// {personnage::Cowboy george = new george("George")},
// {personnage::Barmen franck = new franck("Franck", "The Franchy Bar")},
// {personnage::Sherif clint = new clint("Clint")}
new personnage::Dame("Ginette", "ricard", "noir"),
new personnage::Brigand("Robert"),
new personnage::Brigand("Bernard", "aveze", "ronchon", 200),
new personnage::Cowboy("George"),
new personnage::Barmen("Franck", "The Franchy Bar"),
new personnage::Sherif("Clint"),
new personnage::Sherif("Marc", "Morce", "Compétent"),
new personnage::Ripou("Morice", "Jet", "Malicieux", "Cruel", 2000),
new personnage::FemmeBrigand{"Monique"},
new personnage::FemmeBrigand{"Yvonne", "Thé", "noir", "grogneuse", 75000},
new personnage::Indien("Géronimo")
};
for_each // personnage
for // cherche un sherif dans le vector puis un for qui Sherif emprisonner tt les brigands de vector
cout << "Il était une fois, une jeune et belle dame qui se promenait dans les bois avec une amie.\n";
vector.at(0)->sePresenter();
ginette.sePresenter();
rose.parler("Qu'il fait beau aujourd'hui !!");
cout << "Tout allait bien dans le meilleur des mondes, jusqu'à ce que deux brigands apparurent.\n";
robert.sePresenter();
bernard.sePresenter();
robert.parler("Nous allons vous kidnapper pauvres dames !!");
bernard.kidnapper(rose);
robert.kidnapper(ginette);
cout <<"Les pauvres Rose et Ginette se firent kidnapper par ses deux truans. Mais un vieux cowboy n'est pas loin\n";
george.sePresenter();
george.parler("Que faites vous bande de mal autrus !!!");
george.tirerSur(robert);
george.tirerSur(bernard);
bernard.parler("Tu nous a loupé veillard !!");
george.liberer(ginette);
robert.parler("À bientôt l'ancien !!");
cout <<"Et les deux brigands pure s'en aller paisiblement car la vieux cowboy ne tiré plus tout droit.\n";
cout <<"Surtout avec tout l'alcool qu'il s'était enpiffré. Mais il réussi quand même à liberer une des deux filles.\n";
cout <<"Et notre cowboy retourna au bar pour se remettre de ses émotions.\n";
george.parler("Hey Franck, un verre stp pour moi et cette dame !");
franck.servirVerre(george);
franck.servirVerre(ginette);
franck.parler("Alors ces brigands ?!");
george.parler("Ils se sont enfuit, j'ai plus la forme comme avant ! Mais j'ai réussi à liberer cette dame.");
cout <<"Pendant ce temps là, les brigands s'échappe toujours. Notre cowboy décide donc d'en informer le Shérif.\n";
george.parler("Sherif !! J'ai deux brigands qui m'on échapés.");
clint.parler("Très bien george. Repose toi ! Je prends le relais");
clint.rechercherBrigand(bernard);
clint.rechercherBrigand(robert);
cout <<"Cela s'annonce compliqué pour notre Shérif !!\n";
clint.parler("Où on-t-il bien pu partir ???");
pierre.sePresenter();
pierre.parler("Sherif ! J'ai vu ces deux gangster avec une très jolie femme avec eux !");
clint.parler("Et où ça ?");
pierre.parler("Ils sont près de la gare !!!");
clint.parler("En avant mon fidèle destrier pilepoil !!");
cout <<"Notre Shérif entama donc son périple vers la gare avec son cheval pile-poil.\n";
cout <<"Une fois arrivé, il se cacha et s'approcha discrètement de ses deux brigands avant de les intercepter.\n";
clint.coffrerBrigand(robert);
clint.tirerSur(bernard);
clint.coffrerBrigand(bernard);
clint.liberer(rose);
rose.parler("Mais que vous êtes merveuilleux mon shérif !!");
clint.parler("Pour vous servir Miss rose.");
cout <<"Nos deux personnage partir tout deux heureux.\n";
for(personnage::Humain *pth : vHumain) {
pth->sePresenter();
} // personnage
cout << "\nToute cette histoire commence au saloon de Buddy. C'est la tournée générale du patron :\n" << endl;
for(vector<personnage::Humain *>::iterator it1 = vHumain.begin(); it1 != vHumain.end(); ++it1) {
personnage::Barmen*ptb = dynamic_cast<personnage::Barmen*>(vHumain.at(5));
if(ptb != nullptr) {
ptb->servirVerre(**it1);
}
}
cout << "Ivre mort, Clint se met à tirer sur tous les hors la loi de la pièce." << endl;
for(vector<personnage::Humain *>::iterator it2 = vHumain.begin(); it2 != vHumain.end(); ++it2) {
personnage::Sherif*pts = dynamic_cast<personnage::Sherif*>(*it2);
if(pts != nullptr) {
for(auto it3 = vHumain.begin(); it3 != vHumain.end(); ++it3) {
personnage::Brigand*ptb = dynamic_cast<personnage::Brigand*>(*it3);
if(ptb != nullptr) {
pts->tirerSur(*ptb);
}
}
}
}
cout << "Pris de panique, Buck le méchant, qui a réussi à éviter les balles," << endl;
cout << "s'enfuit en kidnappant toutes les femmes à porté de main." << endl;
for(vector<personnage::Humain *>::iterator it4 = vHumain.begin(); it4 != vHumain.end(); ++it4) {
personnage::Brigand*ptb = dynamic_cast<personnage::Brigand*>(*it4);
if(ptb != nullptr) {
for(auto it5 = vHumain.begin(); it5 != vHumain.end(); ++it5) {
personnage::Dame*ptd = dynamic_cast<personnage::Dame*>(*it5);
if(ptd != nullptr) {
ptb->kidnapper(*ptd);
}
}
}
}
cout << "Heureusement, Shérif Marc parvient à sauver Ginette." << endl;
for(vector<personnage::Humain *>::iterator it6 = vHumain.begin(); it6 != vHumain.end(); ++it6) {
personnage::Sherif*pts = dynamic_cast<personnage::Sherif*>(*it6);
if(pts != nullptr) {
for(auto it7 = vHumain.begin(); it7 != vHumain.end(); ++it7) {
personnage::Dame*ptd = dynamic_cast<personnage::Dame*>(*it7);
if(ptd != nullptr) {
pts->liberer(*ptd);
}
}
}
}
cout << "\nTellement ivre, Shérif Duke essaye d'ailleurs de la sauver plusieurs fois.\n" << endl;
for(vector<personnage::Humain *>::iterator it6 = vHumain.begin(); it6 != vHumain.end(); ++it6) {
personnage::Sherif*pts = dynamic_cast<personnage::Sherif*>(*it6);
if(pts != nullptr) {
for(auto it7 = vHumain.begin(); it7 != vHumain.end(); ++it7) {
personnage::Dame*ptd = dynamic_cast<personnage::Dame*>(*it7);
if(ptd != nullptr) {
pts->liberer(*ptd);
}
}
}
}
cout << "\nSuite à cela, Shérif Clint décide de coffrer tout les brigands." << endl;
cout << "Mais tellement ivre, il décide de coffrer tout le monde.\n" << endl;
// for(vector<personnage::Humain *>::iterator it8 = vHumain.begin(); it8 != vHumain.end(); ++it8) {
// if(*it8->getNom() == "Shérif Clint") { //*it8 = truc pointé par it8
// for(auto it9 = vHumain.begin(); it9 != vHumain.end(); ++it9) {
// *it8->coffrerBrigand(**it9);
// }
// }
// }
// cout << "Géronimo commancant à en avoir marre, décide de scalper tout le monde." << endl;
// for(vector<personnage::Humain *>::iterator it8 = vHumain.begin(); it8 != vHumain.end(); ++it8) {
// if(*it8->getNom() == "Géronimo") {
// for(auto it9 = vHumain.begin(); it9 != vHumain.end(); ++it9) {
// *it8->sclper(**it9);
// }
// }
// }
}
@ -234,7 +308,8 @@ int main() {
// testSherif();
// testRipou();
// testFemmeBrigand();
testIndien();
// testIndien();
// testGeneral1();
testGeneral2();
return 0;
}

@ -1,26 +1,80 @@
#CC : le compilateur à utiliser
CC=g++
cmake_minimum_required(VERSION 3.0)
project(TP6_Bordel)
#CFLAGS : les options de compilation
CFLAGS= -std=c++17 -Wall
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Ajout de l'option -03 pour un niveau plus élevé d'optimisation
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
# les fichiers sources : tous les fichiers présents dans src/
SRC=$(wildcard src/*.cpp)
# Ajouter les fichiers source de votre projet
file(GLOB_RECURSE SOURCES "src/*.cpp")
# les fichiers objets (.o)
OBJ=$(patsubst src/%.cpp,obj/%.o,$(SRC))
# Afficher un message au début de la compilation
message("Début de la compilation")
# Créer une cible pour l'exécutable
add_executable(TP6_Bordel ${SOURCES} src/main.cpp src/Dame.h src/Dame.cpp src/Brigand.h src/Brigand.cpp src/Cowboy.h src/Cowboy.cpp src/Sheriff.cpp src/Barman.h src/Barman.cpp)
#edition des liens : génération de l'exécutable à partir des .o
bin/exe: $(OBJ)
$(CC) $(OBJ) -o $@
# Options de compilation pour le debug
set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall")
# génération des .o à partir des .cpp et .hpp crrespondants :
obj/%.o: src/%.cpp
$(CC) $(CFLAGS) -c $< -o $@
# Tâche de compilation
add_custom_target(build
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Compilation en cours..."
)
#nettoyage : destruction des .o et de l'exécutable
clean:
rm obj/*.o bin/exe
# Tâche de nettoyage
add_custom_target(clean_all
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/
COMMENT "Nettoyage en cours..."
)
# Tâche de débogage
add_custom_target(debug
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
COMMENT "Configuration de la compilation en mode debug..."
)
# Afficher un message au début du debug
message("Début du debug")
# Tâche pour exécuter l'exécutable généré
add_custom_target(run
COMMAND $<TARGET_FILE:TP6_Bordel>
COMMENT "Exécution de l'exécutable..."
)
# Tâche pour exécuter l'exécutable généré avec valgrind
add_custom_target(run_valgrind
COMMAND valgrind --leak-check=full $<TARGET_FILE:TP6_Bordel>
COMMENT "Exécution de l'exécutable avec valgrind..."
)
# Tâche pour exécuter l'exécutable généré avec gdb
option(BUILD_DOC "Build documentation" ON)
# Indique que la construction de la documentation est une option et l'active par défaut
option(BUILD_DOC "Build documentation" ON)
# On vérifie que Doxygen est installé
find_package(Doxygen)
if (DOXYGEN_FOUND)
# Défini les fichiers d'entrée et de sortie
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in)
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
# Demande de configuration du fichier
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
message("Doxygen build started")
# Option ALL qui permet de construire les documents en même temps que l'application
add_custom_target( doc_doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM )
else (DOXYGEN_FOUND)
message("Doxygen need to be installed to generate the doxygen documentation")
endif (DOXYGEN_FOUND)

Binary file not shown.

@ -6,7 +6,7 @@
#include"ingredient.hpp"
#include"recette.hpp"
#include"recetteAffichage.hpp"
#include "livreRecettes.hpp"
//#include "livreRecettes.hpp"
using namespace std;

Binary file not shown.

@ -0,0 +1,71 @@
/*
Faire clignoter une led toutes les secondes
*/
int cpt1=0;
int cpt2=0;
int cpt3=0;
int led1=11;
int led2=12;
int led3=13;
// La fonction setup est exécutée une fois à la mise en secteur de la carte ou si le bouton reset est actionné
void setup()
{
pinMode(led1, OUTPUT); // La broche 2 est initialisée en sortie.
pinMode(led2, OUTPUT); // La broche 3 est initialisée en sortie.
pinMode(led3, OUTPUT); // La broche 4 est initialisée en sortie.
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
// La fonction loop est exécutée en boucle indéfiniment
void loop()
{
if(cpt == 3){
digitalWrite(led1, LOW);
}
if(cpt == 4) {
digitalWrite(led2, LOW);
}
if(cpt == 5) {
digitalWrite(led3, LOW);
}
if(cpt = 6) {
digitalWrite(led1, HIGH);
}
if(cpt == 8){
digitalWrite(led1, HIGH);
}
if(cpt == 10) {
digitalWrite(led2, HIGH);
cpt=1;
}
delay(1000);
cpt++;
// swith(cpt) {
// case 3:
// digitalWrite(led1, LOW);
// break;
// case 4:
// digitalWrite(led1, LOW);
// break;
// case 5:
// digitalWrite(led1, LOW);
// break;
// case 6:
// digitalWrite(led1, LOW);
// break;
// case 8:
// digitalWrite(led1, LOW);
// break;
// case 10:
// digitalWrite(led1, LOW);
// break;
// cpt=0;
// }
// cpt++
}

@ -0,0 +1,102 @@
/*
Faire clignoter une led toutes les secondes
*/
int i=2;
int bt=9;
int val;
// La fonction setup est exécutée une fois à la mise en secteur de la carte ou si le bouton reset est actionné
void setup()
{
pinMode(2, OUTPUT); // La broche 2 est initialisée en sortie.
pinMode(3, OUTPUT); // La broche 3 est initialisée en sortie.
pinMode(4, OUTPUT); // La broche 4 est initialisée en sortie.
pinMode(5, OUTPUT); // La broche 5 est initialisée en sortie.
pinMode(6, OUTPUT); // La broche 6 est initialisée en sortie.
pinMode(7, OUTPUT); // La broche 7 est initialisée en sortie.
pinMode(8, OUTPUT); // La broche 8 est initialisée en sortie.
pinMode(9, INPUT); // La broche 9 est initialisée en entrée.
Serial.begin(9600);
}
// La fonction loop est exécutée en boucle indéfiniment
void loop()
{
val=digitalRead(bt);
Serial.println(val);
if(val == HIGH) {
if(i == 9) {
i=2;
}
digitalWrite(i, HIGH); // Allume la led (HIGH est la valeur du voltage)
delay(1000); // Attend une seconde
digitalWrite(i, LOW); // Eteint la LED (LOW c'est la masse)
delay(500);
i=i+1; // Attend une seconde
}
else {
if(i == 1) {
i=8;
}
digitalWrite(i, HIGH); // Eteint la LED (HIGH c'est la masse)
delay(1000); // Attend une seconde
digitalWrite(i, LOW); // Allume la led (LOW c'est le 5v)
delay(500);
i=i-1; // Attend une seconde
}
delay(5);
}
// Reliez ensuite la led non plus à la masse mais au 5V. Est-ce que votre programme fonctionne toujours ?
//! NON
// Modifiez votre montage pour que un appui sur le bouton poussoir génère un niveau haut (valeur 1).
// La led est donc allumée par défaut et s'éteint quand on appuie sur le bouton poussoir.
// Changer le schema
// void setup()
// {
// pinMode(2, OUTPUT); // La broche 2 est initialisée en sortie.
// pinMode(3, OUTPUT); // La broche 3 est initialisée en sortie.
// pinMode(4, OUTPUT); // La broche 4 est initialisée en sortie.
// pinMode(5, OUTPUT); // La broche 5 est initialisée en sortie.
// pinMode(6, OUTPUT); // La broche 6 est initialisée en sortie.
// pinMode(7, OUTPUT); // La broche 7 est initialisée en sortie.
// pinMode(8, OUTPUT); // La broche 8 est initialisée en sortie.
// pinMode(9, OUTPUT); // La broche 9 est initialisée en entrée.
// Serial.begin(9600);
// }
// // La fonction loop est exécutée en boucle indéfiniment
// void loop()
// {
// val=digitalRead(bt);
// Serial.println(val);
// if(val == HIGH) {
// if(i == 9) {
// i=2;
// }
// digitalWrite(i, HIGH); // Allume la led (HIGH est la valeur du voltage)
// delay(1000); // Attend une seconde
// digitalWrite(i, LOW); // Eteint la LED (LOW c'est la masse)
// delay(500);
// i=i+1; // Attend une seconde
// }
// else {
// if(i == 1) {
// i=8;
// }
// digitalWrite(i, HIGH); // Eteint la LED (HIGH c'est la masse)
// delay(1000); // Attend une seconde
// digitalWrite(i, LOW); // Allume la led (LOW c'est le 5v)
// delay(500);
// i=i-1; // Attend une seconde
// }
// delay(5);
// }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1 +0,0 @@
Subproject commit 06f5f046c24db17ce3692ee2c969705c5b139bdc

@ -1 +0,0 @@
Subproject commit aca49083ec15f1f17920e1159e9694a210f8d227

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save