Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Avenger.cpp : Ce fichier contient la fonction 'main'. L'exécution du programme commence et se termine à cet endroit.
- //
- #include <iostream>
- #include <vector>
- #include <array>
- #include <ctime>
- #include <string>
- using namespace std;
- struct Arme {
- string type;
- int force, portee;
- Arme();
- };
- //
- Arme::Arme() {
- string s[8]{ "fusilmit", "revolver", "arc", "poignard", "mma", "muscles", "rien" };
- type = s[rand() % 8];
- force = rand() % 100;
- portee = rand() % 100;
- }
- class SuperHeros {
- public:
- string nom;
- vector<Arme> armes;
- enum emotion{joie, confiance, peur, surprise, tristesse, degout, colere, anticipation, max_emotion};
- array<int, max_emotion>caracteres;
- SuperHeros();
- SuperHeros(string nom);
- void Init(string nom);
- void Affiche();
- // trois fonctions virtuelles pures = mon interface
- virtual void combattre()=0;
- virtual void fuir()=0;
- virtual void subir()=0;
- };
- SuperHeros::SuperHeros() {
- Init("Incognito");
- }
- SuperHeros::SuperHeros(string nom) {
- Init(nom);
- }
- void SuperHeros::Init(string nom)
- {
- this->nom = nom;
- int nbarm = rand() % 3;
- for (int i = 0; i < nbarm; i++) {
- Arme a;
- armes.push_back(a); // on stock a dans le vector de type Arme
- }
- for (int i = 0; i < caracteres.size(); i++) {
- caracteres[i] = rand() % 100;
- }
- }
- void SuperHeros::Affiche()
- {
- cout << "nom : " << nom << endl;
- cout << "arme : " << endl;
- // parcour du container
- for (auto i = armes.begin(); i != armes.end(); i++) {
- printf("\ttype d'arme: %8s| force: %2d| portee: %2d\n", i->type.c_str(), i->force, i->portee); // iterators
- }
- cout << "emotionel: " << endl;
- for (int i = 0; i < max_emotion; i++) {
- cout << "\t";
- switch (i) {
- case joie: printf("%12s : ", "joie"); break;
- case confiance: printf("%12s : ", "confiance"); break;
- case peur: printf("%12s : ", "peur"); break;
- case surprise: printf("%12s : ", "surprise"); break;
- case tristesse: printf("%12s : ", "tristesse"); break;
- case degout: printf("%12s : ", "degout"); break;
- case colere: printf("%12s : ", "colere"); break;
- case anticipation: printf("%12s : ", "anticipation"); break;
- }
- cout << caracteres[i] << endl;
- }
- cout << "-----------------------------------------" << endl;
- }
- class CaptainAmerica : public SuperHeros {
- public:
- // possibilité d'ajouter des propriétés
- // constru spécifiques
- CaptainAmerica(): SuperHeros(){}
- CaptainAmerica(string nom): SuperHeros(nom){}
- // redéfinir des actions pour captain america
- void combattre();
- void fuir();
- void subir();
- };
- void CaptainAmerica::combattre() {
- cout << "Capitaine America " << nom << " combat..." << endl;
- }
- void CaptainAmerica::fuir() {
- cout << "Capitaine America " << nom << " fuit..." << endl;
- }
- void CaptainAmerica::subir() {
- cout << "Capitaine America " << nom << " subit..." << endl;
- }
- class Hulk : public SuperHeros {
- public:
- // possibilité d'ajouter des propriétés
- // constru spécifiques
- Hulk() : SuperHeros() {}
- Hulk(string nom) : SuperHeros(nom) {}
- // redéfinir des actions pour captain america
- void combattre();
- void fuir();
- void subir();
- };
- void Hulk::combattre() {
- cout << "Hulk " << nom << " combat..." << endl;
- }
- void Hulk::fuir() {
- cout << "Hulk " << nom << " fuit..." << endl;
- }
- void Hulk::subir() {
- cout << "Hulk " << nom << " subit..." << endl;
- }
- class IronMan : public SuperHeros {
- public:
- // possibilité d'ajouter des propriétés
- // constru spécifiques
- IronMan() : SuperHeros() {}
- IronMan(string nom) : SuperHeros(nom) {}
- // redéfinir des actions pour captain america
- void combattre();
- void fuir();
- void subir();
- };
- void IronMan::combattre() {
- cout << "IronMan " << nom << " combat..." << endl;
- }
- void IronMan::fuir() {
- cout << "IronMan " << nom << " fuit..." << endl;
- }
- void IronMan::subir() {
- cout << "IronMan " << nom << " subit..." << endl;
- }
- class AgenRomanov : public SuperHeros {
- public:
- // possibilité d'ajouter des propriétés
- // constru spécifiques
- AgenRomanov() : SuperHeros() {}
- AgenRomanov(string nom) : SuperHeros(nom) {}
- // redéfinir des actions pour captain america
- void combattre();
- void fuir();
- void subir();
- };
- void AgenRomanov::combattre() {
- cout << "AgenRomanov " << nom << " combat..." << endl;
- }
- void AgenRomanov::fuir() {
- cout << "AgenRomanov " << nom << " fuit..." << endl;
- }
- void AgenRomanov::subir() {
- cout << "AgenRomanov " << nom << " subit..." << endl;
- }
- class BlackArrow : public SuperHeros {
- public:
- // possibilité d'ajouter des propriétés
- // constru spécifiques
- BlackArrow() : SuperHeros() {}
- BlackArrow(string nom) : SuperHeros(nom) {}
- // redéfinir des actions pour captain america
- void combattre();
- void fuir();
- void subir();
- };
- void BlackArrow::combattre() {
- cout << "BlackArrow " << nom << " combat..." << endl;
- }
- void BlackArrow::fuir() {
- cout << "BlackArrow " << nom << " fuit..." << endl;
- }
- void BlackArrow::subir() {
- cout << "BlackArrow " << nom << " subit..." << endl;
- }
- ////////////////////
- int main()
- {
- srand((unsigned int)time(NULL));
- array<SuperHeros*, 10> tab;
- for (unsigned i = 0; i < tab.size(); i++) {
- switch (rand() % 5) {
- case 0: tab[i] = new CaptainAmerica("CA" + to_string(i)); break;
- case 1: tab[i] = new Hulk("Hulk" + to_string(i)); break;
- case 2: tab[i] = new IronMan("IronMan" + to_string(i)); break;
- case 3: tab[i] = new AgenRomanov("AgentRomanov" + to_string(i)); break;
- case 4: tab[i] = new BlackArrow("BlackArrow" + to_string(i)); break;
- }
- }
- // gérer les actions selon les types d'individus
- for (SuperHeros* ptr : tab) {
- switch (rand() % 5) {
- case 0: ptr->combattre(); break;
- case 1: ptr->fuir(); break;
- case 2: ptr->subir(); break;
- }
- }
- system("pause");
- return 0;
- }
- // Exécuter le programme : Ctrl+F5 ou menu Déboguer > Exécuter sans débogage
- // Déboguer le programme : F5 ou menu Déboguer > Démarrer le débogage
- // Astuces pour bien démarrer :
- // 1. Utilisez la fenêtre Explorateur de solutions pour ajouter des fichiers et les gérer.
- // 2. Utilisez la fenêtre Team Explorer pour vous connecter au contrôle de code source.
- // 3. Utilisez la fenêtre Sortie pour voir la sortie de la génération et d'autres messages.
- // 4. Utilisez la fenêtre Liste d'erreurs pour voir les erreurs.
- // 5. Accédez à Projet > Ajouter un nouvel élément pour créer des fichiers de code, ou à Projet > Ajouter un élément existant pour ajouter des fichiers de code existants au projet.
- // 6. Pour rouvrir ce projet plus tard, accédez à Fichier > Ouvrir > Projet et sélectionnez le fichier .sln.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement