Advertisement
nanou94100du94

Untitled

Nov 22nd, 2019
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.77 KB | None | 0 0
  1. // Avenger.cpp : Ce fichier contient la fonction 'main'. L'exécution du programme commence et se termine à cet endroit.
  2. //
  3.  
  4. #include <iostream>
  5. #include <vector>
  6. #include <array>
  7. #include <ctime>
  8. #include <string>
  9.  
  10. using namespace std;
  11.  
  12. struct Arme {
  13.  
  14.     string type;
  15.     int force, portee;
  16.     Arme();
  17. };
  18.  
  19. //
  20. Arme::Arme() {
  21.     string s[8]{ "fusilmit", "revolver", "arc", "poignard", "mma", "muscles", "rien" };
  22.     type = s[rand() % 8];
  23.     force = rand() % 100;
  24.     portee = rand() % 100;
  25. }
  26.  
  27. class SuperHeros {
  28. public:
  29.     string nom;
  30.     vector<Arme> armes;
  31.     enum emotion{joie, confiance, peur, surprise, tristesse, degout, colere, anticipation, max_emotion};
  32.  
  33.     array<int, max_emotion>caracteres;
  34.  
  35.     SuperHeros();
  36.     SuperHeros(string nom);
  37.  
  38.     void Init(string nom);
  39.     void Affiche();
  40.  
  41.     // trois fonctions virtuelles pures = mon interface
  42.     virtual void combattre()=0;
  43.     virtual void fuir()=0;
  44.     virtual void subir()=0;
  45.  
  46. };
  47.  
  48. SuperHeros::SuperHeros() {
  49.     Init("Incognito");
  50. }
  51.  
  52.  
  53. SuperHeros::SuperHeros(string nom) {
  54.     Init(nom);
  55. }
  56.  
  57. void SuperHeros::Init(string nom)
  58. {
  59.     this->nom = nom;
  60.     int nbarm = rand() % 3;
  61.     for (int i = 0; i < nbarm; i++) {
  62.         Arme a;
  63.         armes.push_back(a); // on stock a dans le vector de type Arme
  64.  
  65.     }
  66.  
  67.     for (int i = 0; i < caracteres.size(); i++) {
  68.         caracteres[i] = rand() % 100;
  69.     }
  70.  
  71. }
  72.  
  73. void SuperHeros::Affiche()
  74. {
  75.     cout << "nom : " << nom << endl;
  76.     cout << "arme : " << endl;
  77.     // parcour du container
  78.     for (auto i = armes.begin(); i != armes.end(); i++) {
  79.         printf("\ttype d'arme: %8s| force: %2d| portee: %2d\n", i->type.c_str(), i->force, i->portee); // iterators
  80.     }
  81.  
  82.     cout << "emotionel: " << endl;
  83.     for (int i = 0; i < max_emotion; i++) {
  84.         cout << "\t";
  85.         switch (i) {
  86.         case joie: printf("%12s : ", "joie");               break;
  87.         case confiance: printf("%12s : ", "confiance");     break;
  88.         case peur: printf("%12s : ", "peur");               break;
  89.         case surprise: printf("%12s : ", "surprise");       break;
  90.         case tristesse: printf("%12s : ", "tristesse");     break;
  91.         case degout: printf("%12s : ", "degout");           break;
  92.         case colere: printf("%12s : ", "colere");           break;
  93.         case anticipation: printf("%12s : ", "anticipation"); break;
  94.         }
  95.         cout << caracteres[i] << endl;
  96.     }
  97.     cout << "-----------------------------------------" << endl;
  98.  
  99. }
  100.  
  101. class CaptainAmerica : public SuperHeros {
  102. public:
  103.     // possibilité d'ajouter des propriétés
  104.  
  105.  
  106.     // constru spécifiques
  107.     CaptainAmerica(): SuperHeros(){}
  108.     CaptainAmerica(string nom): SuperHeros(nom){}
  109.  
  110.  
  111.     // redéfinir des actions pour captain america
  112.     void combattre();
  113.     void fuir();
  114.     void subir();
  115. };
  116.  
  117. void CaptainAmerica::combattre() {
  118.     cout << "Capitaine America " << nom << " combat..." <<  endl;
  119. }
  120.  
  121. void CaptainAmerica::fuir() {
  122.     cout << "Capitaine America " << nom << " fuit..." << endl;
  123. }
  124.  
  125. void CaptainAmerica::subir() {
  126.     cout << "Capitaine America " << nom << " subit..." << endl;
  127. }
  128.  
  129.  
  130.  
  131.  
  132.  
  133. class Hulk : public SuperHeros {
  134. public:
  135.     // possibilité d'ajouter des propriétés
  136.  
  137.  
  138.     // constru spécifiques
  139.     Hulk() : SuperHeros() {}
  140.     Hulk(string nom) : SuperHeros(nom) {}
  141.  
  142.  
  143.     // redéfinir des actions pour captain america
  144.     void combattre();
  145.     void fuir();
  146.     void subir();
  147. };
  148.  
  149. void Hulk::combattre() {
  150.     cout << "Hulk " << nom << " combat..." << endl;
  151. }
  152.  
  153. void Hulk::fuir() {
  154.     cout << "Hulk " << nom << " fuit..." << endl;
  155. }
  156.  
  157. void Hulk::subir() {
  158.     cout << "Hulk " << nom << " subit..." << endl;
  159. }
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167. class IronMan : public SuperHeros {
  168. public:
  169.     // possibilité d'ajouter des propriétés
  170.  
  171.  
  172.     // constru spécifiques
  173.     IronMan() : SuperHeros() {}
  174.     IronMan(string nom) : SuperHeros(nom) {}
  175.  
  176.  
  177.     // redéfinir des actions pour captain america
  178.     void combattre();
  179.     void fuir();
  180.     void subir();
  181. };
  182.  
  183. void IronMan::combattre() {
  184.     cout << "IronMan " << nom << " combat..." << endl;
  185. }
  186.  
  187. void IronMan::fuir() {
  188.     cout << "IronMan " << nom << " fuit..." << endl;
  189. }
  190.  
  191. void IronMan::subir() {
  192.     cout << "IronMan " << nom << " subit..." << endl;
  193. }
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. class AgenRomanov : public SuperHeros {
  203. public:
  204.     // possibilité d'ajouter des propriétés
  205.  
  206.  
  207.     // constru spécifiques
  208.     AgenRomanov() : SuperHeros() {}
  209.     AgenRomanov(string nom) : SuperHeros(nom) {}
  210.  
  211.  
  212.     // redéfinir des actions pour captain america
  213.     void combattre();
  214.     void fuir();
  215.     void subir();
  216. };
  217.  
  218. void AgenRomanov::combattre() {
  219.     cout << "AgenRomanov " << nom << " combat..." << endl;
  220. }
  221.  
  222. void AgenRomanov::fuir() {
  223.     cout << "AgenRomanov " << nom << " fuit..." << endl;
  224. }
  225.  
  226. void AgenRomanov::subir() {
  227.     cout << "AgenRomanov " << nom << " subit..." << endl;
  228. }
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237. class BlackArrow : public SuperHeros {
  238. public:
  239.     // possibilité d'ajouter des propriétés
  240.  
  241.  
  242.     // constru spécifiques
  243.     BlackArrow() : SuperHeros() {}
  244.     BlackArrow(string nom) : SuperHeros(nom) {}
  245.  
  246.  
  247.     // redéfinir des actions pour captain america
  248.     void combattre();
  249.     void fuir();
  250.     void subir();
  251. };
  252.  
  253. void BlackArrow::combattre() {
  254.     cout << "BlackArrow " << nom << " combat..." << endl;
  255. }
  256.  
  257. void BlackArrow::fuir() {
  258.     cout << "BlackArrow " << nom << " fuit..." << endl;
  259. }
  260.  
  261. void BlackArrow::subir() {
  262.     cout << "BlackArrow " << nom << " subit..." << endl;
  263. }
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271. ////////////////////
  272. int main()
  273. {
  274.     srand((unsigned int)time(NULL));
  275.  
  276.     array<SuperHeros*, 10> tab;
  277.  
  278.     for (unsigned i = 0; i < tab.size(); i++) {
  279.         switch (rand() % 5) {
  280.         case 0: tab[i] = new CaptainAmerica("CA" + to_string(i));       break;
  281.         case 1: tab[i] = new Hulk("Hulk" + to_string(i));                   break;
  282.         case 2: tab[i] = new IronMan("IronMan" + to_string(i));             break;
  283.         case 3: tab[i] = new AgenRomanov("AgentRomanov" + to_string(i));            break;
  284.         case 4: tab[i] = new BlackArrow("BlackArrow" + to_string(i));           break;
  285.         }
  286.     }
  287.  
  288.  
  289.     // gérer les actions selon les types d'individus
  290.  
  291.     for (SuperHeros* ptr : tab) {
  292.         switch (rand() % 5) {
  293.         case 0: ptr->combattre();   break;
  294.         case 1: ptr->fuir();        break;
  295.         case 2: ptr->subir();       break;
  296.         }
  297.     }
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.     system("pause");
  307.     return 0;
  308. }
  309.  
  310. // Exécuter le programme : Ctrl+F5 ou menu Déboguer > Exécuter sans débogage
  311. // Déboguer le programme : F5 ou menu Déboguer > Démarrer le débogage
  312.  
  313. // Astuces pour bien démarrer :
  314. //   1. Utilisez la fenêtre Explorateur de solutions pour ajouter des fichiers et les gérer.
  315. //   2. Utilisez la fenêtre Team Explorer pour vous connecter au contrôle de code source.
  316. //   3. Utilisez la fenêtre Sortie pour voir la sortie de la génération et d'autres messages.
  317. //   4. Utilisez la fenêtre Liste d'erreurs pour voir les erreurs.
  318. //   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.
  319. //   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