Untitled
unknown
ruby
3 years ago
2.6 kB
0
Indexable
#include <iostream> #include <unordered_map> using namespace std; enum class PrimaryWeapon { Sword, Axe, Bow, MagicBook }; enum class SecondaryWeapon { ShortSword, Shield, Arrows, None }; enum class Tools { Lockpick, Bandages, Adrenaline, ManaPotion }; // unordered_map<PrimaryWeapon, string> primaryWeaponMap { // {PrimaryWeapon::Sword, "Sword"} // }; struct StartingEquipment { PrimaryWeapon primaryWeapon; SecondaryWeapon secondaryWeapon; Tools tools; }; class HeroClass { public: virtual void create() = 0; void printStats() { cout << "Strength: " << strength; cout << "\nDefence: " << defence; cout << "\nSpeed: " << speed; cout << "\nIntelligence: " << intelligence; cout << "\n----------------------"; cout << "\nStarting equipment:"; // cout << "\nPrimary weapon: " << startingEquipment.primaryWeapon; // cout << "\nSecondary weapon: " << startingEquipment.secondaryWeapon; // cout << "\nTools: " << startingEquipment.tools; } void setStrength(int a_strength) { strength = a_strength; } int getStrength() const { return strength; } void setDefence(int a_defence) { defence = a_defence; } int getDefence() const { return defence; } void setSpeed(int a_speed) { speed = a_speed; } int getSpeed() const { return speed; } void setIntelligence(int a_intelligence) { intelligence = a_intelligence; } int getIntelligence() const { return intelligence; } void setStartingEquipment(StartingEquipment a_startingEquipment) { startingEquipment = a_startingEquipment; } StartingEquipment getStartingEquipment() const { return startingEquipment; }; private: int strength; int defence; int speed; int intelligence; StartingEquipment startingEquipment; }; class Barbarian : public HeroClass { public: void create() { setStrength(10); setDefence(5); setSpeed(3); setIntelligence(1); setStartingEquipment(StartingEquipment{ PrimaryWeapon::Axe, SecondaryWeapon::None, Tools::ManaPotion }); } }; class Magician : public HeroClass { public: void create() { setStrength(1); setDefence(3); setSpeed(5); setIntelligence(10); setStartingEquipment(StartingEquipment{ PrimaryWeapon::MagicBook, SecondaryWeapon::None, Tools::Bandages }); } }; int main() { HeroClass* hero = new Magician(); hero->create(); hero->printStats(); return 0; }
Editor is loading...