Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <array>
- 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;
- }
- //classe abstraite
- class SuperHeros
- {
- public :
- string nom;
- vector<Arme> armes;
- enum emotion { joie, confiance, peur, surprise, tristesse, degout, colere, anticipation, max_emotion };
- array<int, max_emotion>caracters;
- SuperHeros();
- SuperHeros(string nom);
- void Init(string nom);
- void Affiche();
- // trois fonctions virtuelles pures = 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);
- }
- for (int i = 0; i < caracters.size(); i++)
- caracters[i] = rand() % 100;
- }
- void SuperHeros::Affiche()
- {
- cout << "Nom : " << nom << endl;
- cout << "Armes : " << endl;
- for (auto i = armes.begin(); i != armes.end(); i++)
- printf("\t type: %8s | force : %2d | portee : %2d\n", i->type.c_str(), i->force, i->portee);
- cout << "Emotionnel : " << 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 << caracters[i] << endl;
- }
- cout << "-----------------------------\n";
- }
- class CaptainAmerica : public SuperHeros
- {
- public:
- //possibilite d'ajouter dans propriétés
- //constructeurs spécifiques
- CaptainAmerica() : SuperHeros(){}
- CaptainAmerica(string nom):SuperHeros(nom){}
- //redéfinitions des actions pour Captain America
- void Combattre();
- void Fuir();
- void Subir();
- };
- void CaptainAmerica::Combattre()
- {
- cout << "Captain America " << nom << " combat" << endl;
- }
- void CaptainAmerica::Fuir()
- {
- cout << "Captain America " << nom << " fuit" << endl;
- }
- void CaptainAmerica::Subir()
- {
- cout << "Captain America " << nom << " subit" << endl;
- }
- class Hulk : public SuperHeros
- {
- public:
- //possibilite d'ajouter dans propriétés
- //constructeurs spécifiques
- Hulk() : SuperHeros() {}
- Hulk(string nom) :SuperHeros(nom) {}
- //redéfinitions 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:
- //possibilite d'ajouter dans propriétés
- //constructeurs spécifiques
- IronMan() : SuperHeros() {}
- IronMan(string nom) :SuperHeros(nom) {}
- //redéfinitions 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 AgentRomanov : public SuperHeros
- {
- public:
- //possibilite d'ajouter dans propriétés
- //constructeurs spécifiques
- AgentRomanov() : SuperHeros() {}
- AgentRomanov(string nom) :SuperHeros(nom) {}
- //redéfinitions des actions pour Captain America
- void Combattre();
- void Fuir();
- void Subir();
- };
- void AgentRomanov::Combattre()
- {
- cout << "Agent Romanov " << nom << " combat" << endl;
- }
- void AgentRomanov::Fuir()
- {
- cout << "Agent Romanov " << nom << " fuit" << endl;
- }
- void AgentRomanov::Subir()
- {
- cout << "Agent Romanov " << nom << " subit" << endl;
- }
- class BlackArrow : public SuperHeros
- {
- public:
- //possibilite d'ajouter dans propriétés
- //constructeurs spécifiques
- BlackArrow() : SuperHeros() {}
- BlackArrow(string nom) :SuperHeros(nom) {}
- //redéfinitions des actions pour Captain America
- void Combattre();
- void Fuir();
- void Subir();
- };
- void BlackArrow::Combattre()
- {
- cout << "Agent Romanov " << nom << " combat" << endl;
- }
- void BlackArrow::Fuir()
- {
- cout << "Agent Romanov " << nom << " fuit" << endl;
- }
- void BlackArrow::Subir()
- {
- cout << "Agent Romanov " << nom << " subit" << endl;
- }
- int main()
- {
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement